function homepage(helper) { var cloudVersion = 6.23;//插件版本号,判断是否需要更新 var d = []; if(getAppVersion()<2579){ d.push({ title: "先更新软件版本,否则无法正常使用" , col_type: "rich_text" }); } //判断是否有断插小程序 var Dnzt = 0; if(fileExist('hiker://files/cache/MyParseSet.json')&&fileExist('hiker://files/rules/DuanNian/MyParse.json')){var isDn = 1}else{var isDn = 0}; if(isDn==0){ d.push({ title: "告警提示:断插必要条件检测不通过
建议检查步聚:
1.其他渠道安装断插小程序
2.断插小程序更新脚本依赖
3.断插配置页保存一次配置" , col_type: "rich_text" }); }else{ try{ eval('var DnSet = ' + fetch(config.DnSetOld)); var Dnoldcj = DnSet.cj; Dnzt = 1; } catch(e) { d.push({ title: "告警提示:断插旧配置文件损坏
建议检查步聚:
1.删除hiker://files/cache/MyParseSet.json文件
2.断插配置页保存一次配置", col_type: "rich_text" }); } } if(Dnzt==1){ //判断是否有插件,是否首次使用 eval(fetch(config.SrcSet));//加载用户参数 if(fetch(config.SrcCj)==""||typeof userconfig == "undefined"){ var isCj = 0; var nowVersion = 0; }else{ var isCj = 1; var nowVersion = fetch(config.SrcCj).match(/SrcVersion = ([\s\S]*?);/)[1]; } d.push({ title: '‘‘’’私家定制', desc: '断插 附加功能', url: `@lazyRule=.js:if(getMyVar('debug','0')=='0'){putMyVar('debug','1');'toast://哥帅不'}else{'toast://哥很帅'}`, col_type: 'text_center_1' }); if(isCj==1){ if(DnSet.cj ==config.SrcCj){var cjzt = "开"}else{var cjzt = "关"} if(helper == undefined){var helper="0"} d.push({ title:'解析', col_type: 'input', desc: "请输入解析地址", url: cjzt == "关" ? "'toast://本插件还没有启用呢,无法测试'" : $.toString((userconfig,helper)=>{ let url = getMyVar("playTestUrl", "").trim(); if (url=="") { return "toast://还没有输入链接"; } showLoading('调用本插件,智能解析中...'); if(userconfig.testcheck == 1){ refreshPage(false); putMyVar('ischeck','1'); putMyVar('Stitle',MY_RULE.title); putMyVar('Sversion',MY_RULE.version); putMyVar('helper',helper); } eval(fetch(config.SrcCj)); if(getMyVar('playTestjx', '')==""||getMyVar('playTestjx', '')=="不指定"){ return aytmParse(url); }else{ return aytmParse(url,getMyVar('playTestjx')); } },userconfig,helper), extra: { titleVisible: true, ua:PC_UA, defaultValue: getMyVar('playTestUrl', '') || "", onChange: 'putMyVar("playTestUrl",input)' } }); eval('let fromUrl =' + request('hiker://page/fromUrl')); eval(fromUrl.rule); d.push({ title:'来个影片', url: $(sitelist,3).select((urls)=>{ let url = urls[input]; putMyVar('playTestUrl', url); refreshPage(true); return'toast://已选测试片源:' + input; },urls), col_type: "scroll_button" }); eval('var DnNew =' + fetch(config.DnSetNew)); var jxs = DnNew.title; jxs.unshift('不指定'); d.push({ title:getMyVar('playTestjx', "")==""?'不指定':getMyVar('playTestjx'), url: $(jxs,3).select(()=>{ let jx = input; putMyVar('playTestjx', jx); refreshPage(true); return'toast://已选指定解析:' + input; }), col_type: "scroll_button" }); d.push({ title:'断插设置', url: isDn==0?'toast://未找到断插程序,功能受限':fileExist('hiker://files/cache/fileLinksᴰⁿ.txt')?setupPages("设置"):"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noRecordHistory#", col_type: "scroll_button" }); d.push({ title:'解析接口', url: isDn==0?'toast://未找到断插程序,功能受限':fileExist('hiker://files/cache/fileLinksᴰⁿ.txt')?setupPages("编辑"):"hiker://page/Route?rule=MyFieldᴰⁿ&type=编辑#noRecordHistory#", col_type: "scroll_button" }); d.push({ title:'生成免嗅', url: $("#noHistory##noRecordHistory#hiker://empty").rule((createJParse) => { createJParse(); },createJParse), col_type: "scroll_button" }); d.push({ title:'建议处理', url: $('#noLoading#').lazyRule((faildeal) => { eval(fetch(config.SrcSet));//加载用户参数 if(userconfig.dellist==undefined||userconfig.dellist.length==0){ return 'toast://运行良好,没有建议处理的解析'; }else{ return $("#noHistory##noRecordHistory#hiker://empty").rule((dellist,faildeal) => { faildeal(dellist) },userconfig.dellist,faildeal); } },faildeal), col_type: "scroll_button" }); d.push({ title:'说明', url: 'hiker://empty#' + `@rule=js:var d = [];d.push({title:'本插件是在断插基础上做的一些附加功能
主要特点如下:
1.实现自动顺序或乱序按成功优先级匹配,自动匹配片源适用解析
2.实现自动排序,对解析失败的接口降权降序、直到超过次数剔除,越用越快
3.支持不同类型解析,顺序为js免嗅》json直链》x5通免
4.智能优选模式下,可配合排除片源手工剔除+断插配置优先,达到智能化+个性化
5.自动处理播放地址,加ua、存本地等操作,尽量提高播放成功率
6.无需测试,本插件会自动跳过失效的,会在日志提示或通过建议删除处理
7.其他项,就请自行探索吧,最后需感谢断佬提供的原版插件!
更新日志
1.增加指定解析测试,2.URL直链解析增加网页明码解析逻辑,3.增加批量复检',col_type: 'rich_text'});setHomeResult(d);`, col_type: "scroll_button" }); d.push({ title:'♥', url: $(getMyVar('mmgntgmm',""),"秘密功能通关密码").input((onSelect,userconfig)=>{ putMyVar('mmgntgmm',input); evalPrivateJS("egl9Ie3p8c62hTcY/7uf5QOBFogc9JoL5TzjDI8y7FHLK8tI1lZz+wif+9ZIAdT2U4kW6OB3xHn/4DntdHdgR3n1itkW5qt324e/TIUXzyPLK8tI1lZz+wif+9ZIAdT2yyvLSNZWc/sIn/vWSAHU9heDK8MvAuaeXn99VjHX9GDLK8tI1lZz+wif+9ZIAdT2M6PA9I6Cw1IaeBlI1EueOcocRQPhsOHHIFz2Li4ajujd22Yj+u4odWN15iH1VyOByyvLSNZWc/sIn/vWSAHU9sQnQ8kqIbxqwJSP0AIe+sPLK8tI1lZz+wif+9ZIAdT2jbUT5CRpNMvC0u7rWdsA7xBp1fqeubKC0GZw+eP9pZjLK8tI1lZz+wif+9ZIAdT2yyvLSNZWc/sIn/vWSAHU9oFDvpNO8ikETwJSzGWplOPLK8tI1lZz+wif+9ZIAdT2T3vswDWnXFX9puTrXgi5EMsry0jWVnP7CJ/71kgB1PYn19QRxIda+Tx+nKfD4GRghdlEwnrBbGyJcHloEQbL1ssry0jWVnP7CJ/71kgB1PbT/drCgPUivvzR7Kn9dwjryyvLSNZWc/sIn/vWSAHU9vKDrRGwYMdB6vUbdkuIA6M=") let jsid = verification(input); if(jsid == "1"){ putMyVar('isadmin', '1'); refreshPage(false); if(userconfig.ismulti==undefined||userconfig.ismulti==0){var multi = "开启"}else{var multi = "关闭"} return $([multi+"多线路","多线程数量"],2,"哈喽LSP,被你发现了秘密功能").select((onSelect)=>{ return onSelect(input); },onSelect); }else if(jsid == "2"){ putMyVar('isadmin', '1'); refreshPage(false); return $(["幸运大抽奖"],2,"没错,你就是“lsp”").select((onSelect)=>{ if(input=="幸运大抽奖"){ return onSelect(input); } },onSelect); }else if(jsid == "3"){ return $(["幸运大抽奖"],2,"").select((onSelect)=>{ if(input=="幸运大抽奖"){ var myDate = new Date(); var luckDate = myDate.getMonth()+1+'-'+myDate.getDate(); if(luckDate==getItem('luckDate')&&getMyVar('isadmin', '0')=="0"){ return "toast://今天的机会已用完,客官明天再来吧"; }else{ return onSelect(input); } } },onSelect); }else{ return "toast://欢迎有缘人,记住“哥就是帅”♥"; } },onSelect,userconfig), col_type: "scroll_button" }); d.push({ col_type: 'line' }); var nowVersion = fetch(config.SrcCj).match(/SrcVersion = ([\s\S]*?);/)[1]; d.push({ title:cjzt=='关'?'‘‘’’插件状态('+cjzt+')':'‘‘’’插件状态('+cjzt+')', url: $('#noLoading#').lazyRule((DnSet) => { eval('var newDnSet = ' + fetch(config.DnSetNew)); if(DnSet.cj ==config.SrcCj){ DnSet.cj = config.DnCj; newDnSet.settings.cj = config.DnCj; var sm = "恢复默认插件" }else{ DnSet.cj = config.SrcCj; newDnSet.settings.cj = config.SrcCj; var sm = "欢迎进入自动、智能、便捷的视界" } writeFile(config.DnSetOld, $.stringify(DnSet)); writeFile(config.DnSetNew, $.stringify(newDnSet)); refreshPage(false); return 'toast://'+sm; },DnSet), desc: cjzt=='关'?'当前插件为:Parse_Dn.js':'当前插件为:SrcAuto'+nowVersion, col_type: "text_center_1" }); d.push({ title:userconfig.printlog==1?'打印日志(开)':'打印日志(关)', url:$('#noLoading#').lazyRule((userconfig) => { if(userconfig.printlog == 0){ userconfig.printlog = 1; }else{ userconfig.printlog = 0; userconfig.testcheck = 0; } writeFile(config.SrcSet, 'var userconfig = ' + JSON.stringify(userconfig)); refreshPage(false); return 'toast://切换成功'; },userconfig), col_type: "text_2" }); d.push({ title:userconfig.autoselect==1?'智能优选(开)':'智能优选(关)', url: $('#noLoading#').lazyRule((userconfig) => { if(userconfig.autoselect == 0){ userconfig.autoselect = 1; var sm = "开启智能优选模式,全自动匹配解析口" }else{ userconfig.autoselect = 0; var sm = "关闭智能优选,按断插设置调用解析口" } writeFile(config.SrcSet, 'var userconfig = ' + JSON.stringify(userconfig)); refreshPage(false); return 'toast://'+sm; },userconfig), col_type: "text_2" }); if(getMyVar('isadmin', '0')=="1"){ d.push({ title:userconfig.iscustom==1?'亲情关怀(开)':'亲情关怀(关)', url: $('#noLoading#').lazyRule((userconfig) => { if(userconfig.iscustom == 0){ userconfig.iscustom = 1; var sm = "当前处于远程亲情关怀模式,请关注远程解析接口文件" }else{ userconfig.iscustom = 0; var sm = "当前处于本地模式" } writeFile(config.SrcSet, 'var userconfig = ' + JSON.stringify(userconfig)); refreshPage(false); return 'toast://'+sm; },userconfig), col_type: "text_2" }); if(userconfig.iscustom == 1){ d.push({ title: userconfig.remotepath!=undefined&&userconfig.remotepath!=""?'远程地址(有)':'远程地址(无)', url: userconfig.iscustom==0?'toast://亲情关怀未启用,无需设置远程解析地址':$(userconfig.remotepath||"","需自行搭建云文件").input((userconfig) => { if(!/^http/.test(input)&&input!=""){ return "toast://远程链接地址无效"; }else{ userconfig.remotepath=input; writeFile(config.SrcSet, 'var userconfig = ' + JSON.stringify(userconfig)); refreshPage(false); return 'toast://设置成功'+input; } },userconfig), col_type: 'text_2' }); } } if(userconfig.autoselect == 1){ d.push({ title:userconfig.disorder==1?'乱序模式(开)':'乱序模式(关)', url: $('#noLoading#').lazyRule((userconfig) => { if(userconfig.disorder == 0){ userconfig.disorder = 1; var sm = "开启乱序模式,在同解析接口类型中,排序同级的解析随机重排序" }else{ userconfig.disorder = 0; var sm = "关闭乱序模式,按常规智能顺序处理" } writeFile(config.SrcSet, 'var userconfig = ' + JSON.stringify(userconfig)); refreshPage(false); return 'toast://'+sm; },userconfig), col_type: "text_2" }); d.push({ title:userconfig.parsereserve==1?'优先断插(开)':'优先断插(关)', url: $('#noLoading#').lazyRule((userconfig) => { if(userconfig.parsereserve == 0){ userconfig.parsereserve = 1; var sm = "开启强制优先断插配置的解析,在同解析接口类型中,强制手工配置的解析优先" }else{ userconfig.parsereserve = 0; var sm = "关闭强制优先断插配置的解析,按常规智能排序处理" } writeFile(config.SrcSet, 'var userconfig = ' + JSON.stringify(userconfig)); refreshPage(false); return 'toast://'+sm; },userconfig), col_type: "text_2" }); d.push({ title:'失败剔除('+userconfig.fromcount+')', url: $(userconfig.fromcount,"智能优选开启时\n失败多少个片源,剔除并提示删除").input((userconfig) => { if(!parseInt(input)||parseInt(input)<1||parseInt(input)>13){return 'toast://输入有误,请输入1-13数字'}else{ userconfig.fromcount=parseInt(input); writeFile(config.SrcSet, 'var userconfig = ' + JSON.stringify(userconfig)); refreshPage(false); return 'toast://当开启智能优选,失败片源达'+userconfig.fromcount+'个,加入建议删除'; } },userconfig), col_type: "text_2" }); }else{ d.push({ title: '失败剔除('+userconfig.failcount+'次)', url: $(userconfig.failcount,"智能优选关闭时\n失败多少次,剔除并提示删除").input((userconfig) => { if(!parseInt(input)||parseInt(input)<1||parseInt(input)>5){return 'toast://输入有误,请输入1-5数字'}else{ userconfig.failcount=parseInt(input); writeFile(config.SrcSet, 'var userconfig = ' + JSON.stringify(userconfig)); refreshPage(false); return 'toast://失败次数设置为'+userconfig.failcount+',超过次数剔除解析'; } },userconfig), col_type: 'text_2' }); } d.push({ title: 'X5超时('+userconfig.x5timeout+'秒)', url: $(userconfig.x5timeout,"针对x5通免的超时时长").input((userconfig) => { if(!parseInt(input)||parseInt(input)<1||parseInt(input)>10){return 'toast://输入有误,请输入1-10数字'}else{ userconfig.x5timeout=parseInt(input); writeFile(config.SrcSet, 'var userconfig = ' + JSON.stringify(userconfig)); refreshPage(false); return 'toast://x5通免解析超时时间设为:'+userconfig.x5timeout+'秒'; } },userconfig), col_type: 'text_2' }); d.push({ title:userconfig.jstoweb==1?'允许js>web(开)':'允许js>web(关)', url: $('#noLoading#').lazyRule((userconfig) => { if(userconfig.jstoweb == 0){ userconfig.jstoweb = 1; var sm = "开启允许js>web,当遇到js套x5/web通免的解析时,会中断帅助手逻辑,直接跳转通免执行,特殊情况下使用,不建议开启" }else{ userconfig.jstoweb = 0; var sm = "关闭允许js>web,按常规逻辑处理,推荐关闭" } writeFile(config.SrcSet, 'var userconfig = ' + JSON.stringify(userconfig)); refreshPage(false); return 'toast://'+sm; },userconfig), col_type: "text_2" }); d.push({ title:userconfig.cachem3u8==1?'缓存m3u8(开)':'缓存m3u8(关)', url: $('#noLoading#').lazyRule((userconfig) => { if(userconfig.cachem3u8 == 0){ userconfig.cachem3u8 = 1; var sm = "开启缓存m3u8模式,此功能优点很多,可以增强播放成功率,播放地址不失效,特别是不浪费解析,推荐开启" }else{ userconfig.cachem3u8 = 0; var sm = "关闭缓存m3u8模式,只针对不使用波澜投屏时的传统投屏或其他特殊情况下使用" } writeFile(config.SrcSet, 'var userconfig = ' + JSON.stringify(userconfig)); refreshPage(false); return 'toast://'+sm; },userconfig), col_type: "text_2" }); var myDate = new Date(); var checkDate = myDate.getMonth()+1+'-'+myDate.getDate(); if(getMyVar('ischeck','0')=="1"&&getMyVar('debug','0')!="86"){ userconfig.testcheck = 0; setItem('checkDate',checkDate); clearMyVar('luckadmin'); writeFile(config.SrcSet, 'var userconfig = ' + JSON.stringify(userconfig)); } if(getMyVar('isadmin', '0')=="1"||getMyVar('luckadmin', '0')=="1"){ d.push({ title: userconfig.testcheck==1?'测试检测(开)':'测试检测(关)', url: userconfig.printlog==0&&userconfig.testcheck==0?'toast://需先打开日志开关,才能观察到结果':checkDate==getItem('checkDate')&&userconfig.testcheck==0?'toast://要讲武德,不要反复测试,且用且珍惜':$('#noLoading#').lazyRule((userconfig) => { if(userconfig.testcheck == 0){ userconfig.testcheck = 1; var sm = "当前处于检测状态,注意查看日志" }else{ userconfig.testcheck = 0; var sm = "检测解析功能已关闭" } writeFile(config.SrcSet, 'var userconfig = ' + JSON.stringify(userconfig)); refreshPage(false); return 'toast://'+sm; },userconfig), col_type: "text_2" }); } d.push({ col_type: 'line' }); d.push({ title: '调整排序策略', url: $(['‘‘’’排除片源', '‘‘’’重置回厂'], 2).select((onSelect) => { return onSelect(input); },onSelect), desc: '重置所有排序记录、强制剔除解析片源', col_type: 'text_center_1' }); } d.push({ col_type: 'line_blank' }); if(typeof userconfig == "undefined"||userconfig.remotepath==""){ var custompath = ""; }else{ var custompath = userconfig.remotepath; } d.push({ title: '‘‘’’更新脚本依赖', url: isDn==0?$("断插都没有?无法使用!").confirm(()=>"toast://哥就是帅"):isCj==1&&nowVersion==cloudVersion&&getMyVar('debug','0')!='86'?"toast://已经是最新版本了":$('#noLoading#').lazyRule((isCj,remotepath) => { //var myDate = new Date(); //var updateDate = myDate.getMonth()+1+'-'+myDate.getDate(); //if(updateDate!=getItem('updateDate')||isCj==0||getMyVar('debug','0')=='86'){ let filepath = getMyVar('SrcCloud','0'); var cjFile = fetch(filepath,{timeout:2000}); if(cjFile.indexOf('SrcVersion') > -1){ //if(MY_RULE.version发现新版本:'+cloudVersion.toString():'不用频繁更新、有新版本时会提示', col_type: 'text_center_1' }); } setResult(d); } function faildeal(list) { addListener("onClose", $.toString(() => { clearMyVar("动作"); clearMyVar("片源"); eval(fetch(config.SrcSet));//加载用户参数 userconfig['dellist'] = config.faillist; writeFile(config.SrcSet, 'var userconfig = ' + JSON.stringify(userconfig)); initConfig({faillist:'0'}); })); setPageTitle("失败解析处理"); //去重复 function uniq(array){ var temp = []; //一个新的临时数组 for(var i = 0; i < array.length; i++){ if(temp.indexOf(array[i]) == -1){ temp.push(array[i]); } } return temp; } if(config.faillist==undefined||config.faillist=="0"){ initConfig({faillist:uniq(list)}); refreshPage(false); } var d = []; d.push({ title: '选择处理动作▼', col_type: "rich_text" }); d.push({ col_type: 'line' }); for (let i = 0; i < 9; i++) { d.push({ col_type: "blank_block" }) } var Color = "#f13b66a"; function getHead(title) { return '‘‘’’' + title + ''; } d.push({ title:getMyVar('动作', '0') == '复检' ? getHead('复检↓') : '复检', url: $("#noLoading#").lazyRule(() => {putMyVar('动作', '复检');refreshPage(false);return "toast://选择动作:复检";}), col_type: "scroll_button" }); d.push({ title:getMyVar('动作', '0') == '删除' ? getHead('删除↓') : '删除', url: $("#noLoading#").lazyRule(() => {putMyVar('动作', '删除');refreshPage(false);return "toast://选择动作:删除";}), col_type: "scroll_button" }); d.push({ title:getMyVar('动作', '0') == '标记' ? getHead('标记↓') : '标记', url: $("#noLoading#").lazyRule(() => {putMyVar('动作', '标记');refreshPage(false);return "toast://选择动作:标记";}), col_type: "scroll_button" }); d.push({ title:getMyVar('动作', '0') == '重置' ? getHead('重置↓') : '重置', url: $("#noLoading#").lazyRule(() => {putMyVar('动作', '重置');refreshPage(false);return "toast://选择动作:重置";}), col_type: "scroll_button" }); if(getMyVar('动作', '0') == '复检'){ d.push({ col_type: 'line_blank' }); d.push({ title: '选择复检片源▼' , col_type: "rich_text" }); d.push({ col_type: 'line' }); for (let i = 0; i < 9; i++) { d.push({ col_type: "blank_block" }) } eval('var fromUrl =' + request('hiker://page/fromUrl')); eval(fromUrl.rule); if(getMyVar('片源', '0')=="0"){ var vipUrl = ""; }else{ var vipUrl = urls[getMyVar('片源')]; } for (var i in sitelist) { d.push({ title:getMyVar('片源', '0') == sitelist[i] ? getHead(sitelist[i]+'↓') : sitelist[i], url: $("#noLoading#").lazyRule((site) => {putMyVar('片源', site);refreshPage(false);return "toast://片源:"+site;},sitelist[i]), col_type: "scroll_button" }); } } d.push({ col_type: "line_blank" }); d.push({ title: "检测失败的解析▼ 点击执行处理" , col_type: "rich_text" }); d.push({ col_type: 'line' }); for (let i = 0; i < 5; i++) { d.push({ col_type: "blank_block" }) } if(getMyVar('动作', '0') == '复检'){ d.push({ title:">>>批量复检<<<", url: getMyVar('片源', '0')=="0"?"toast://需选择上方的复检片源":$('#noLoading#').lazyRule((vipUrl,list) => { eval(fetch('hiker://files/cache/SrcAuto.js')); return aytmParse(vipUrl,list.join(',')); },vipUrl,config.faillist), desc: '批量对当前所有失败解析口,重新批量复检', col_type: "text_center_1" }); } for (var i in config.faillist) { d.push({ title:config.faillist[i], url: getMyVar('动作', '0')=="0"?"toast://需选择上方的处理动作":getMyVar('动作', '0')=="复检"&&getMyVar('片源', '0')=="0"?"toast://需选择上方的复检片源":$().lazyRule((vipUrl,parseStr,faillist) => { if(getMyVar('动作', '0')=="复检"){ eval(fetch('hiker://files/cache/SrcAuto.js')); return aytmParse(vipUrl,parseStr); } if(getMyVar('动作', '0')=="删除"){ return $(parseStr+":是否确认删除?").confirm((faillist,parseStr)=>{ function removeByValue(arr, val) { for(var i = 0; i < arr.length; i++) { if(arr[i] == val) { arr.splice(i, 1); break; } } } log(faillist); removeByValue(faillist,parseStr); log(faillist); initConfig({faillist:faillist}); log(config.faillist); //从建议处理中删除 eval(fetch(config.SrcSet));//加载用户参数 removeByValue(userconfig.dellist,parseStr); writeFile(config.SrcSet, 'var userconfig = ' + $.stringify(userconfig)); var DnSetNew = config.DnSetNew; eval('var json =' + fetch(DnSetNew)); if(json.title.indexOf(parseStr)>-1){ if (json.codes.hasOwnProperty(parseStr)) { delete json.codes[parseStr]; } removeByValue(json.title,parseStr); writeFile(DnSetNew, $.stringify(json)); refreshPage(false); return "toast://已将〖" + parseStr + "〗删除"; }else{ refreshPage(false); return "toast://〖" + parseStr + "〗为无效配置,需手工从配置项去掉"; } },faillist,parseStr); } if(getMyVar('动作', '0')=="标记"){ return $("✗"+parseStr,"新的解析名,只修改解析名").input((faillist,parseStr) => { function removeByValue(arr, val) { for(var i = 0; i < arr.length; i++) { if(arr[i] == val) { arr.splice(i, 1); break; } } } removeByValue(faillist,parseStr); initConfig({faillist:faillist}); var DnSetNew = config.DnSetNew; eval('var json =' + fetch(DnSetNew)); if(json.title.indexOf(parseStr)>-1){ if (json.codes.hasOwnProperty(parseStr)) { json.codes[input] = json.codes[parseStr]; delete json.codes[parseStr]; } json.title.splice(json.title.indexOf(parseStr),1,input); writeFile(DnSetNew, $.stringify(json)); var filepath = "hiker://files/cache/SrcSort.json"; var sortfile = fetch(filepath); if(sortfile != ""){ eval("var sortlist=" + sortfile+ ";"); for (var i in sortlist) { if(sortlist[i].name==parseStr){ sortlist[i].name = input; writeFile(filepath, JSON.stringify(sortlist)); break; } } } refreshPage(false); return "toast://已更名为〖" + input + "〗"; }else{ return "toast://〖" + parseStr + "〗为无效配置,需手工从配置项去掉"; } },faillist,parseStr); } if(getMyVar('动作', '0')=="重置"){ return $(parseStr+":是否确认重置(重新启用)?").confirm((faillist,parseStr)=>{ function removeByValue(arr, val) { for(var i = 0; i < arr.length; i++) { if(arr[i] == val) { arr.splice(i, 1); break; } } } removeByValue(faillist,parseStr); initConfig({faillist:faillist}); var DnSetNew = config.DnSetNew; eval('var json =' + fetch(DnSetNew)); if(json.title.indexOf(parseStr)>-1){ var filepath = "hiker://files/cache/SrcSort.json"; var sortfile = fetch(filepath); if(sortfile != ""){ eval("var sortlist=" + sortfile+ ";"); for (var i in sortlist) { if(sortlist[i].name==parseStr){ sortlist[i].sort = 0; sortlist[i].stopfrom = []; writeFile(filepath, JSON.stringify(sortlist)); break; } } } refreshPage(false); return "toast://已重置排序并启用〖" + parseStr + "〗"; }else{ return "toast://〖" + parseStr + "〗为无效配置,需手工从配置项去掉"; } },faillist,parseStr); } },vipUrl,config.faillist[i],config.faillist), col_type: "text_3" }); } setResult(d); } function onSelect(input) { var type = parseDomForHtml(input, 'span&&title')||input; switch (type) { case "重置回厂": return $("清空智能排序记录,是否确认?").confirm(()=>{ writeFile('hiker://files/cache/srcsort.json', ''); return 'toast://已重置排序历史'; }); break; case "排除片源": return $("hiker://empty#noRecordHistory#").rule((stop) => { eval('var fromUrl =' + request('hiker://page/fromUrl')); eval(fromUrl.rule); stop(fromlist,sitelist); },stopfrom) break; case "开启多线路": eval(fetch(config.SrcSet));//加载用户参数 userconfig['ismulti'] = 1; writeFile(config.SrcSet, 'var userconfig = ' + JSON.stringify(userconfig)); return 'toast://已开启JS免嗅、明码直链多线程解析'; break; case "关闭多线路": eval(fetch(config.SrcSet));//加载用户参数 userconfig['ismulti'] = 0; writeFile(config.SrcSet, 'var userconfig = ' + JSON.stringify(userconfig)); return 'toast://已关闭JS免嗅、明码直链多线程解析'; break; case "多线程数量": eval(fetch(config.SrcSet));//加载用户参数 return $(userconfig.multiline,"JS免嗅、JSON直链\n多线程解析运行数量(1-5)").input((userconfig) => { if(!parseInt(input)||parseInt(input)<1||parseInt(input)>5){return 'toast://输入有误,请输入1-5数字'}else{ userconfig.multiline=parseInt(input); userconfig['adminuser'] = 1; writeFile(config.SrcSet, 'var userconfig = ' + JSON.stringify(userconfig)); refreshPage(false); return 'toast://多线程数量设为:'+userconfig.multiline; } },userconfig); break; case "幸运大抽奖": showLoading('开奖中,期待🙏...'); let jxarray=pdfa(request("https://www.yisiclub.cn/1725/.html", {timeout:5000}),".u-text-format&&p"); let list=[]; for(let i in jxarray){ try{ let title=pdfh(jxarray[i],'Text').split("—")[0].split("http")[0]; let url=pdfh(jxarray[i],'a&&href'); if(title&&url&&!/www.yisiclub.cn/.test(url)){ let it={ title:title, url:url }; list.push(it); } }catch(e){ log(e.message); } } function random(min, max) { return Math.floor(Math.random() * (max - min)) + min; } if(list.length>0){ var myDate = new Date(); var luckDate = myDate.getMonth()+1+'-'+myDate.getDate(); setItem('luckDate',luckDate); hideLoading(); let j = random(0,parseInt(list.length*1.3)); if(j>=list.length){ return 'toast://😪啥也没有抽到,客官明日再来吧!'; }else if(j==8||j==18||j==28||j==38){ putMyVar('luckadmin','1'); refreshPage(false); return 'toast://😀幸运值爆炸,发现一个超级隐藏功能!'; }else{ return $("😀幸运值爆表,抽到了一个解析,是否收下?").confirm((jx)=>{ return $("hiker://empty#noRecordHistory#").rule((jx) => { addListener("onClose", $.toString(() => { clearMyVar("luckcheck"); })); this.d = []; d.push({ title: "🎉恭喜幸运儿,得到了只有五成几率的奖品", col_type: "rich_text" }); d.push({ col_type: "line_blank" }); d.push({ title: "解析名称:" + jx.title, col_type: "rich_text" }); d.push({ title: "解析地址:" + jx.url, col_type: "rich_text" }); d.push({ title: getMyVar('luckcheck','0')=="0"?"解析状态:未检测":getMyVar('luckcheck','0')=="1"?"解析状态:有效":"解析状态:无效", col_type: "rich_text" }); d.push({ col_type: "line_blank" }); for (let i = 0; i < 9; i++) { d.push({ col_type: "blank_block" }) } d.push({ title: "测试", url: getMyVar('luckcheck','0')=="1"?"toast://已检测成功,放心保存!":$("#noLoading#").lazyRule((x5jx) => { var vipUrl = []; eval('let fromUrl =' + request('hiker://page/fromUrl')); eval(fromUrl.rule); vipUrl.push(urls['爱奇艺']); vipUrl.push(urls['优酷']); vipUrl.push(urls['腾讯']); showLoading('x5检测中,超过30秒则代表失败') return x5Player(x5jx, vipUrl); function x5Player(x5jx, vipUrl) { return 'x5Rule://' + x5jx + vipUrl[0] + '@' + (typeof $$$ == 'undefined' ? $ : $$$).toString((x5jx, vipUrl, x5Player) => { if (window.c == null) { window.c = 0; fba.showLoading('x5检测中,超过30秒则代表失败'); }; window.c++; if (window.c * 250 >= 10000) { if (vipUrl.length == 1) { //最后一个X5解析失败了 fba.hideLoading(); fba.log("幸运抽奖-检测结束"); putMyVar('luckcheck','2'); refreshPage(false); return "toast://检测失败,这个解析看来和你无缘"; } else { //X5解析失败了 fba.log("幸运抽奖-检测下一个片源"); return x5Player(x5jx, vipUrl.slice(1)); } } var urls = _getUrls(); var exclude = /playm3u8|m3u8\.tv|min\.css|404\.m3u8/; var contain = /\.mp4|\.m3u8|\.flv|\.avi|\.mpeg|\.wmv|\.mov|\.rmvb|\.dat|qqBFdownload|mime=video%2F|video_mp4/; for (var i in urls) { if (!exclude.test(urls[i]) && contain.test(urls[i])) { fy_bridge_app.log("幸运抽奖-检测成功>"+urls[i]); fba.hideLoading(); return $$$("#noLoading#").lazyRule(()=>{ putMyVar('luckcheck','1'); refreshPage(false); return "toast://检测成功,可以放心保存"; }); } } }, x5jx, vipUrl, x5Player) } },jx.url), extra: { ua:PC_UA }, col_type: 'text_3' }); if(getMyVar('luckcheck','0')=="0"){var issave = "还未通过检测,确认要保存吗?"}else{var issave = "已通过检测,确认保存吧!"} d.push({ title: "保存", url: $(issave).confirm((jx)=>{ return $("#noLoading#").lazyRule((jx) => { var DnSetNew = config.DnSetNew; eval('var json =' + fetch(DnSetNew)); if(json.title.indexOf(jx.title)==-1){ json.title.push(jx.title); json.codes[jx.title] = jx.url; writeFile(DnSetNew, $.stringify(json)); back(true); return 'toast://💪已保存'; }else{ return "toast://〖" + jx.title + "〗已存在了,无法保存"; } },jx) },jx), col_type: 'text_3' }); d.push({ title: "放弃", url: $("#noLoading#").lazyRule(() => { back(true); return 'toast://👉已放弃'; }), col_type: 'text_3' }); setResult(d); },jx); },list[j]); } }else{ hideLoading(); return 'toast://😢貌似抽奖系统坏了,请稍后再试!'; } break; default: return 'toast://暂不支持'; break; } function stopfrom(fromlist,sitelist) { addListener("onClose", $.toString(() => { //clearMyVar("parsename"); clearMyVar("allowfrom"); clearMyVar("stopfrom"); })); setPageTitle("当前解析策略"); var d = []; d.push({ col_type: "line_blank" }); eval('var newDnSet = ' + fetch(config.DnSetNew)); var parsenames = newDnSet.title; d.push({ title: "选择解析=> " + getMyVar("parsename"), url: $(parsenames,2).select(() => { putMyVar("parsename", input); refreshPage(true); }), col_type: 'text_1' }); d.push({ col_type: "line_blank" }); if(getMyVar("parsename","0")!="0"){ d.push({ title: "已排除:" , col_type: "rich_text" }); d.push({ col_type: 'line' }); function removeByValue(arr, val) { for(var i = 0; i < arr.length; i++) { if(arr[i] == val) { arr.splice(i, 1); break; } } } var pname = getMyVar("parsename"); var issort = 0; var Globalexclude = 0; var allowlist = sitelist; var filepath = "hiker://files/cache/SrcSort.json"; var sortfile = fetch(filepath); if(sortfile != ""){ eval("var sortlist=" + sortfile+ ";"); for (var i in sortlist) { if(sortlist[i].name==pname){ var stoplist =sortlist[i].stopfrom; if(getMyVar('allowfrom','0')!="0"){//允许解析片源,从stopfrom中删除 removeByValue(stoplist,getMyVar('allowfrom')); sortlist[i].stopfrom = stoplist; writeFile(filepath, JSON.stringify(sortlist)); } if(getMyVar('stopfrom','0')!="0"){//排除解析片源,添加到stopfrom stoplist[stoplist.length] = getMyVar('stopfrom'); sortlist[i].stopfrom = stoplist; writeFile(filepath, JSON.stringify(sortlist)); } issort = 1; if(sortlist[i].Globalexclude==1){Globalexclude = 1}; break; } } clearMyVar("allowfrom"); clearMyVar("stopfrom"); for (let j in stoplist) { let fromname = fromlist[stoplist[j]]; d.push({ title: fromname, url: issort==0?'toast://'+getMyVar("parsename")+' 还没有被调用过,无法设置':$("#noLoading#").lazyRule((ypfrom) => { putMyVar('allowfrom',ypfrom) refreshPage(true); return 'toast://解析“'+getMyVar("parsename")+'” 已允许“'+ypfrom +'”片源'; },stoplist[j]), col_type: 'text_4' }); removeByValue(allowlist, fromname); } d.push({ col_type: 'line' }); d.push({ col_type: 'line' }); d.push({ title: "未排除:" , col_type: "rich_text" }); d.push({ col_type: 'line' }); for (let j in allowlist) { let fromname = allowlist[j]; d.push({ title: fromname, url: issort==0?'toast://'+getMyVar("parsename")+' 还没有被调用过,无法设置':$("#noLoading#").lazyRule((ypfrom) => { putMyVar('stopfrom',ypfrom) refreshPage(true); return 'toast://解析“'+getMyVar("parsename")+'” 已排除“'+ypfrom +'”片源'; },fromlist[allowlist[j]]), col_type: 'text_4' }); } d.push({ col_type: 'line' }); d.push({ col_type: 'line' }); d.push({ title: Globalexclude == 1?'‘‘’’全局排除(开)':'‘‘’’全局排除(关)', url: issort==0?'toast://'+getMyVar("parsename")+' 还没有被调用过,无法设置':$('#noLoading#').lazyRule((pname,sortfile,filepath,Globalexclude) => { if(Globalexclude==1){var isexclude = 0;var sm ="关闭";}else{var isexclude = 1;var sm ="开启";} eval("var sortlist=" + sortfile+ ";"); for (var i in sortlist) { if(sortlist[i].name==pname){ sortlist[i]['Globalexclude'] = isexclude; writeFile(filepath, JSON.stringify(sortlist)); break; } } refreshPage(true); return 'toast://“'+getMyVar("parsename")+'” 已'+sm+'全局排除'; },pname,sortfile,filepath,Globalexclude), desc: Globalexclude == 1?'将当前解析剔除,仅用于特殊调用':'当前解析参与正常调用', col_type: 'text_center_1' }); d.push({ col_type: "line_blank" }); d.push({ title: '重置当前解析', url: sortfile == ""?'toast://未找到排序历史,先去享受一下':$('#noLoading#').lazyRule((pname,sortfile,filepath) => { eval("var sortlist=" + sortfile+ ";"); for (var i in sortlist) { if(sortlist[i].name==pname){ sortlist[i].sort = 0; sortlist[i].stopfrom = []; sortlist[i]['Globalexclude'] = 0; writeFile(filepath, JSON.stringify(sortlist)); break; } } refreshPage(true); return 'toast://“'+getMyVar("parsename")+'” 已重置'; },pname,sortfile,filepath), desc: '将当前解析的排序重置为0\n一键重置已排除片源', col_type: 'text_center_1' }); }else{ d.push({ title: "首次使用本插件或者重置回厂后,需先去观看影片调用一次本插件才能手工设定" , col_type: "rich_text" }); } } setResult(d); } } function setupPages(type) { switch (type) { case "设置": return $("hiker://empty#noRecordHistory#").rule(() => { this.d = []; eval(fetch('hiker://files/cache/fileLinksᴰⁿ.txt')); if (!getVar('jxItemV')) { require(fLinks.jxItUrl); } d.push({ desc: 'auto', url: fLinks.x5Route + 'Parse_Dn.html', col_type: 'x5_webview_single' }); var jxItNewV = getVar('jxItNewV', ''), jxItemV = getVar('jxItemV', ''); var versionTips = jxItNewV == '' ? '‘‘' : '‘‘' + jxItNewV + '\n'; var pics = [ 'https://tva1.sinaimg.cn/large/9bd9b167gy1fwri56wjhqj21hc0u0arr.jpg', 'https://cdn.seovx.com/img/seovx-20-10%20(92).jpg', 'https://cdn.seovx.com/img/mom2018%20(207).jpg', 'https://tva4.sinaimg.cn/large/9bd9b167gy1fwrh5xoltdj21hc0u0tax.jpg', 'https://tva1.sinaimg.cn/large/005BYqpggy1fwreyu4nl6j31hc0u0ahr.jpg', 'https://s3.bmp.ovh/imgs/2021/10/d7e60b990742093d.jpeg', 'https://s3.bmp.ovh/imgs/2021/10/91ad6d6538bf8689.jpg', 'https://tva1.sinaimg.cn/large/005BYqpggy1fwresl5pmlj31hc0xcwka.jpg', 'https://tva3.sinaimg.cn/large/005BYqpggy1fwrgjdk74oj31hc0u0dqn.jpg', 'https://cdn.seovx.com/img/mom2018%20(803).jpg' ]; d.push({ img: pics[Math.floor(Math.random() * 10)], title: versionTips + '’’  点击此处查看操作指引
点击上方头像进入编辑', desc: '当前版本: ' + jxItemV, url: fLinks.czzy, col_type: 'movie_1' }); setResult(d); }) break; case "编辑": return $("hiker://empty#noRecordHistory#").rule(() => { this.d = []; eval(fetch('hiker://files/cache/fileLinksᴰⁿ.txt')); require(fLinks.jxItUrl); jxItem.jxList(); setResult(d); }) break; default: return 'toast://需要传入正确参数' break; } } function createJParse() { addListener("onClose", $.toString(() => { clearVar('m_token_key'); })); setPageTitle("直链生成免嗅解析"); var d = []; d.push({ title: "支持json、明码、mao类型生成js免嗅" , col_type: "rich_text", extra:{textSize:17} }); d.push({ col_type: "line_blank" }); function create(Parse,vipUrl,ref) { clearMyVar('createJg'); clearVar('m_token_key'); if(ref!=""){ var html = request(Parse + vipUrl, {headers: {'Referer': ref}, timeout:5000}); var refref = `{headers: {'Referer': '`+ref+`'}, timeout:5000}`; } else { var html = request(Parse + vipUrl, {timeout:5000}); var refref = `{timeout:5000}`; } try{ let turl = pdfh(html,"iframe&&src"); if(turl!=""){ if (/^http/.test(turl)) { Parse = turl.split('=')[0]+'='; }else if (!/^\//.test(turl)) { Parse = Parse.replace('?url=','')+turl.split('=')[0]+'='; }else{ Parse = Parse.match(/http.*?:\/\/[^\/]+/i)[0]+turl.split('=')[0]+'='; } if(ref!=""){ var html = request(Parse + vipUrl, {headers: {'Referer': ref}, timeout:5000}); } else { var html = request(Parse + vipUrl, {timeout:5000}); } } } catch (e) { } if(typeof(html)!='undefined' && html !=""){ var url = ""; var lx = ""; var JXstr = ""; try { url = JSON.parse(html).url||JSON.parse(html).data.url||JSON.parse(html).data; lx = "O"; } catch (e) { //log('不是json解析'); if(html.indexOf("_token =") != -1){ lx = "M"; if(ref!=""){ refreshX5WebView(ref); } else { refreshX5WebView(Parse + vipUrl); } for (var i=0;i<6;i++) { if(getVar('m_token_key','')==""){ java.lang.Thread.sleep(1000); } } //log(getVar('m_token_key','')); if(getVar('m_token_key','')==""){ return "0"; } }else if(/\.m3u8|\.mp4|\.flv/.test(html)){ try { lx = "U"; if(html.indexOf('urls = "') != -1){ url = `html.match(/urls = "(.*?)"/)[1]`; }else if(html.indexOf('"url":"') != -1){ url = `html.match(/"url":"(.*?)"/)[1]`; }else if(html.indexOf('id="video" src="') != -1){ url = `html.match(/id="video" src="(.*?)"/)[1]`; }else if(html.indexOf('url: "') != -1){ url = `html.match(/url: "(.*?)"/)[1]`; }else{ lx = ""; } } catch (e) { log(e.message); lx = ""; return "0"; } }else{ return "0"; } } if(lx=="O"){ JXstr = `★解析名★function (vipUrl) {\n try {\n var url = JSON.parse(request('`+Parse+`' + vipUrl,`+refref+`)).url;\n return url;\n } catch (e) {\n return '';\n }\n}`; }else if(lx=="U"){ JXstr = `★解析名★function (vipUrl) {\n try {\n var html = request('`+Parse+`' + vipUrl,`+refref+`);\n url = `+url+`;\n return url;\n } catch (e) {\n return '';\n }\n}`; }else if(lx=="M"){ JXstr = `★解析名★function (vipUrl) {\n try {\n var url = this.maoss('`+Parse+`' + vipUrl, '`+ref+`', '`+getVar('m_token_key','key')+`');\n return url;\n } catch (e) {\n return '';\n }\n}`; } //putMyVar('JXlx',lx); return JXstr; }else{ return ""; } } d.push({ title:'生成', col_type: 'input', desc: "请输入URL直链形式的地址", url: $.toString((create)=>{ let Parse = getMyVar("UrlParse", "").trim(); if (!/^http/.test(Parse)) { return "toast://解析接口输入不正确"; } let vipUrl = getMyVar("UrlvipUrl", "https://v.qq.com/x/cover/mzc00200jtxd9ap.html").trim(); if (vipUrl=="") { return "toast://视频地址不能为空"; } let ref = getMyVar('UrlReferer', '').trim(); refreshPage(false); showLoading('智能生成中...'); let parse = create(Parse,vipUrl,ref); hideLoading(); if(parse!=""){ if(parse=="0"){ refreshPage(false); return "toast://此解析暂不支持生成,或者输入Referer再试一次"; }else{ return $("","生成JS免嗅成功,给起个名字吧").input((parse) => { if(input !=""){ parse = parse.replace('解析名',input); } putMyVar('createJg', parse); refreshPage(false); },parse) } }else{ refreshPage(false); return "toast://此解析无法访问"; } },create), extra: { titleVisible: true, defaultValue: getMyVar('UrlParse', ''), onChange: 'putMyVar("UrlParse",input)' } }); d.push({ title:'vipUrl', col_type: 'input', desc: "视频地址vipUrl", extra: { titleVisible: false, defaultValue: getMyVar('UrlvipUrl', 'https://v.qq.com/x/cover/mzc00200jtxd9ap.html'), onChange: 'putMyVar("UrlvipUrl",input)' } }); d.push({ title:'Referer', col_type: 'input', desc: "根据实际需要输入Referer", extra: { titleVisible: false, defaultValue: getMyVar('UrlReferer', ''), onChange: 'putMyVar("UrlReferer",input)' } }); d.push({ title:'结果', col_type: 'input', desc: "生成结果", extra: { titleVisible: false, type: "textarea", height: -1, defaultValue: getMyVar('createJg', ''), } }); d.push({ desc: '1', url: '', extra: { canBack: false, blockRules: ['.m4a', '.mp3', '.mp4', '.m3u8', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', '.css'], js: $.toString((url) => { //eval(fy_bridge_app.getInternalJs()); //fba.log(location.href); if(!location.href.includes("about:blank")){ if(!location.href.includes(url)){ //fba.log('跳转'+url); location.href=url; }else{ try{ var key=window.CryptoJS.enc.Utf8.stringify(_token_key); //fba.log(key); fba.putVar('m_token_key', key); fba.parseLazyRule(`hiker://empty@lazyRule=.js:refreshX5WebView('');`); }catch(e){ //fba.log(e.message) } } } },getMyVar("UrlParse", "").trim()+getMyVar("UrlvipUrl", "").trim()), jsLoadingInject: true }, col_type: 'x5_webview_single' }); /* d.push({ desc: '200', url: 'https://jiexi.f7ys.com/jiexi.php?url=http://www.mgtv.com/b/384019/15861747.html', extra: { canBack: false, referer: 'https://www.haokanju1.cc',//getMyVar('UrlReferer', ''), //blockRules: ['.m4a', '.mp3', '.mp4', '.m3u8', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', '.css'], js: $.toString(() => { //eval(fy_bridge_app.getInternalJs()); try{ var key=window.CryptoJS.enc.Utf8.stringify(_token_key); fba.log(key); fba.putVar('m_token_key', key); fba.parseLazyRule(`hiker://empty@lazyRule=.js:refreshX5WebView('');`); }catch(e){ fba.log(e.message) } }), //jsLoadingInject: true }, col_type: 'x5_webview_single' }); */ d.push({ title:'清空', col_type:'text_2', url:$().lazyRule(()=>{ clearMyVar('UrlParse'); clearMyVar('UrlvipUrl'); clearMyVar('UrlReferer'); clearMyVar('createJg'); clearVar('m_token_key'); refreshPage(true); return "toast://已清空"; }) }); if(getMyVar('createJg', '')!=""){ d.push({ title:'复制', col_type:'text_2', url:$().lazyRule(()=>{ copy(getMyVar('createJg', '')); return 'hiker://empty' }) }); } d.push({ desc: '‘‘’’生成不是100%能成功的,仅支持部份类型的解析!', url: 'toast://哥就是帅,不接受反驳!', col_type: 'text_center_1' }); setResult(d); }