Update SrcAuto.js

assistant
jevons0411 2 years ago
parent 7c203ec624
commit c15413bb15
  1. 123
      SrcAuto.js

@ -23,24 +23,26 @@ var defaultconfig = {
"remotepath": ""//远程在线文件地址
}
eval(fetch('hiker://files/cache/SrcSet.js'));//加载用户参数
if(!userconfig){var config = defaultconfig}else{var config = userconfig}//没有取到用户参数时调用默认参数
if(getMyVar('Stitle','0').indexOf("帅助手") == -1){config.testcheck=0}
putMyVar('SrcM3U8',config.cachem3u8);
if(!userconfig){var SAconfig = defaultconfig}else{var SAconfig = userconfig}//没有取到用户参数时调用默认参数
var testcheck = SAconfig.testcheck;
var printlog = SAconfig.printlog;
if(getMyVar('Stitle','0').indexOf("帅助手") == -1){testcheck=0}
putMyVar('SrcM3U8',SAconfig.cachem3u8);
//加载远程自定义设置
if(config.iscustom==1){
if(SAconfig.iscustom==1){
try{
let remotefile = fetchCache(config.remotepath, 24);
let remotefile = fetchCache(SAconfig.remotepath, 24);
if(remotefile.indexOf("ParseZ") != -1){
eval(remotefile);
Object.assign(ParseS, ParseZ);
}else{
if(config.printlog==1){log("√远程关怀自定义解析为空,走本地配置文件")};
config.iscustom = 0;
if(printlog==1){log("√远程关怀自定义解析为空,走本地配置文件")};
SAconfig.iscustom = 0;
}
}catch(e){
if(config.printlog==1){log("√远程关怀自定义加载失败,走本地配置文件")};
config.iscustom = 0;
if(printlog==1){log("√远程关怀自定义加载失败,走本地配置文件")};
SAconfig.iscustom = 0;
}
}else{var resetsort = 0};
@ -56,17 +58,17 @@ if (isresetsort==0){
//自动解析入口
var aytmParse = function (vipUrl,parseStr) {
if(config.printlog==1){
if(printlog==1){
log("√影片地址:"+vipUrl);
if(config.iscustom==1){log("√已开启远程关怀模式")};
if(SAconfig.iscustom==1){log("√已开启远程关怀模式")};
if(parseStr){
log("√指定解析>"+parseStr);
}else{
if(config.autoselect==1){log("√开启智能优选")}else{log("√关闭智能优选")};
if(config.disorder==1){log("√开启乱序模式")}else{log("√关闭乱序模式")};
if(config.parsereserve==1){log("√开启强制优先断插配置")};
if(SAconfig.autoselect==1){log("√开启智能优选")}else{log("√关闭智能优选")};
if(SAconfig.disorder==1){log("√开启乱序模式")}else{log("√关闭乱序模式")};
if(SAconfig.parsereserve==1){log("√开启强制优先断插配置")};
}
if(config.testcheck==1){log("√当前为检测模式")};
if(testcheck==1){log("√当前为检测模式")};
};
var str = "";
var from = "";
@ -135,12 +137,11 @@ var aytmParse = function (vipUrl,parseStr) {
var prior = [];//处理用户手工配置项的临时数组
if (parseStr) {
strlist = parseStr.split(/,|,/); //字符分割
//config.autoselect = 0;
}else{
//自动列出所有接口
var excludeParse = ['defaultParse', 'maoss', 'CityIP', 'cacheM3u8', 'pcUA', 'parseLc', 'gparse', 'nparse', '道长仓库通免', 'defaultParseWeb', '智能优选', '默认'];
if(mySet.qju=="智能优选"){config.autoselect=1}
if(config.autoselect==1){
if(mySet.qju=="智能优选"){SAconfig.autoselect=1}
if(SAconfig.autoselect==1){
//全局排除的追加到排除列表
for(var j=0;j<sortlist.length;j++){
try{
@ -161,7 +162,7 @@ var aytmParse = function (vipUrl,parseStr) {
}
}
var parsetmplist = [];//用于取配置文件的解析口临时数组
if(config.iscustom==1){
if(SAconfig.iscustom==1){
//远程关怀模式只取在线解析接口
for( var key in ParseZ ){
if(excludeParse.indexOf(key)==-1 && prior.indexOf(key)==-1){
@ -176,7 +177,7 @@ var aytmParse = function (vipUrl,parseStr) {
}
}
}
if(config.disorder==1){
if(SAconfig.disorder==1){
//乱序模式
function randArr (arr) {
return arr.sort(() => {
@ -202,7 +203,7 @@ var aytmParse = function (vipUrl,parseStr) {
}
if (strlist.length==0) {hideLoading();return 'toast://好像没有配置解析接口,解个寂寞吗';}
if(config.printlog==1){
if(printlog==1){
log("√影片来源标识:"+from)
log("√选择的解析接口组:"+strlist);
};
@ -255,7 +256,7 @@ var aytmParse = function (vipUrl,parseStr) {
}else{
if(sortlist[j].stopfrom.length > 0){ Object.assign(stopfrom, sortlist[j].stopfrom); };
}
if(config.autoselect==1&&prior.includes(parsename)==true&&config.parsereserve==1){
if(SAconfig.autoselect==1&&prior.includes(parsename)==true&&SAconfig.parsereserve==1){
//开启了强制优先并保留用户配置的解析
sort = 0;
stopfrom = [];
@ -278,7 +279,7 @@ var aytmParse = function (vipUrl,parseStr) {
if(dellist.indexOf(strlist[i])==-1){dellist.push(strlist[i])};
}else{
//解析接口存在
if(config.autoselect==1){
if(SAconfig.autoselect==1){
if(stopfrom.indexOf(from)==-1){
//自动筛选模式时,sort只做排序使用,不包含停用片源的解析,则加入解析接口组
if(parselx=="J"){
@ -292,13 +293,13 @@ var aytmParse = function (vipUrl,parseStr) {
Uparsenum ++;
}
}else{
if(stopfrom.length>=config.fromcount&&stopfrom.indexOf(from)>-1){
if(stopfrom.length>=SAconfig.fromcount&&stopfrom.indexOf(from)>-1){
//此解析接口大于多少片源失败,且已排除片源,加入提示删除数组
dellist.push(strlist[i]);
}
}
}else{
if(sort>=config.failcount&&stopfrom.indexOf(from)>-1){
if(sort>=SAconfig.failcount&&stopfrom.indexOf(from)>-1){
//此接口已失败大于设置的次数,且已排除片源,加入提示删除数组
dellist.push(strlist[i]);
}else{
@ -318,19 +319,19 @@ var aytmParse = function (vipUrl,parseStr) {
}
}
if(dellist.length > 0){
config['dellist'] = dellist;
writeFile("hiker://files/cache/SrcSet.js", 'var userconfig = ' + JSON.stringify(config))
if(config.printlog == 1){log("√建议删除解析口:"+dellist);}
SAconfig['dellist'] = dellist;
writeFile("hiker://files/cache/SrcSet.js", 'var userconfig = ' + JSON.stringify(SAconfig))
if(printlog == 1){log("√建议删除解析口:"+dellist);}
}
if(parselist.length == 0){
if(config.printlog==1){log("√没有可用的解析接口,需重新配置")};
if(printlog==1){log("√没有可用的解析接口,需重新配置")};
hideLoading();
return 'toast://√解析口全部无效了,重新配置吧';
}else{
//解析接口排序,将之前失败的排在后面
parselist.sort(sortData)
}
if(config.printlog==1){
if(printlog==1){
log("√断插有效解析数:"+parselist.length+" (J解析:"+Jparsenum+",U解析:"+Uparsenum+")");
};
@ -341,12 +342,12 @@ var aytmParse = function (vipUrl,parseStr) {
var names = [];//用于多线路名称
var headers = [];//用于多线路头信息
var danmu = "";//多线路弹幕
var ismulti = config.ismulti||0;//是否开启多线程
var multiline = config.multiline||1;//多线程数量
var adminuser = config.adminuser||0;
var ismulti = SAconfig.ismulti||0;//是否开启多线程
var multiline = SAconfig.multiline||1;//多线程数量
var adminuser = SAconfig.adminuser||0;
if(ismulti==0&&adminuser==0){multiline=2}else{if(multiline>5){multiline=5}}
if(config.testcheck==1){multiline=10}
if(testcheck==1){multiline=10}
//明码解析线程代码
var parsetask = function(obj) {
@ -404,7 +405,7 @@ var aytmParse = function (vipUrl,parseStr) {
}
if(rurl){
if(/^toast/.test(rurl)){
if(config.printlog==1){log(obj.name+'>提示:'+rurl.replace('toast://',''))};
if(printlog==1){log(obj.name+'>提示:'+rurl.replace('toast://',''))};
rurl = "";
}else if(/^http/.test(rurl)&&SrcParseS.testvideourl(rurl,obj.name)==0){
//检测地址有效性
@ -418,7 +419,7 @@ var aytmParse = function (vipUrl,parseStr) {
var sorttask = function(obj) {
for(var j=0;j<sortlist.length;j++){
if(!parselist.some(item => item.name==sortlist[j].name)){
if(config.printlog==1){log(sortlist[j].name+'不存在,从sort文件中删除')}
if(printlog==1){log(sortlist[j].name+'不存在,从sort文件中删除')}
sortlist.splice(j,1);
j = j - 1;
}
@ -426,7 +427,7 @@ var aytmParse = function (vipUrl,parseStr) {
return obj;
};
if(config.testcheck==1){showLoading('√解析列表,检测中')};
if(testcheck==1){showLoading('√解析列表,检测中')};
var cleansort = 0;
for (var i=0;i<parselist.length;i++) {
if(playurl){break;}
@ -440,7 +441,7 @@ var aytmParse = function (vipUrl,parseStr) {
JxList.push(parselist[s]);
i=s;
}
if(cleansort==0&&!parseStr&&config.autoselect==1){
if(cleansort==0&&!parseStr&&SAconfig.autoselect==1){
cleansort = 1;//清理sort文件只调用一轮
JxList.push({lx:'cleansort'});
}
@ -467,9 +468,9 @@ var aytmParse = function (vipUrl,parseStr) {
obj.ids.push(id);
obj.results.push(taskResult);
obj.errors.push(error);
if (ismulti!=1&&config.testcheck!=1&&contain.test(taskResult.rurl) && !exclude.test(taskResult.rurl)) {
if (ismulti!=1&&testcheck!=1&&contain.test(taskResult.rurl) && !exclude.test(taskResult.rurl)) {
//toast("我主动中断了");
if(config.printlog==1){log("√线程结束");}
if(printlog==1){log("√线程结束");}
return "break";
}
}
@ -484,18 +485,18 @@ var aytmParse = function (vipUrl,parseStr) {
for(let k in beids){
parsename = beids[k].split('|')[1];
parselx = beids[k].split('|')[0];
if(config.printlog==1){log("√"+ parsename + ">" + parselx + "解析结果检查")};
if(printlog==1){log("√"+ parsename + ">" + parselx + "解析结果检查")};
if(beerrors[k]==null){
parseurl = beresults[k].rurl;
if(config.jstoweb==1&&parselx=="J"&&parseurl.search(/x5Rule|webRule/)>-1){
if(SAconfig.jstoweb==1&&parselx=="J"&&parseurl.search(/x5Rule|webRule/)>-1){
//js中跳转x5或web嗅探
if(config.printlog==1){log("√JS中跳转x5|web嗅探,解析逻辑被打断,结果自负")};
if(printlog==1){log("√JS中跳转x5|web嗅探,解析逻辑被打断,结果自负")};
return parseurl;
}else{
if (contain.test(parseurl) && !exclude.test(parseurl)) {
if(playurl==""){playurl = parseurl;}
if(config.printlog==1){log("√"+parselx+"解析成功>" + parseurl)};
if(config.testcheck==1){
if(printlog==1){log("√"+parselx+"解析成功>" + parseurl)};
if(testcheck==1){
playurl = "";
}else{
if(ismulti==1&&multiline>1){
@ -553,7 +554,7 @@ var aytmParse = function (vipUrl,parseStr) {
issort = 1;
failsum = sortlist[j].sort;
if(sortlist[j].stopfrom.indexOf(from)==-1){
if((config.autoselect==1&&failsum>=3)||(failsum>=config.failcount)){
if((SAconfig.autoselect==1&&failsum>=3)||(failsum>=SAconfig.failcount)){
//自动选择接口时此接口失败大于等于3时、失败次数大于限定,此片源排除此解析接口
sortlist[j].stopfrom[sortlist[j].stopfrom.length] = from
};
@ -561,14 +562,14 @@ var aytmParse = function (vipUrl,parseStr) {
break;
}
}
if(config.testcheck==1){faillist.push(parsename)};
if(config.printlog==1){log("√解析失败,已失败"+failsum+"次,跳过")};
if(testcheck==1){faillist.push(parsename)};
if(printlog==1){log("√解析失败,已失败"+failsum+"次,跳过")};
}
}
}
}else{
if(config.testcheck==1){faillist.push(parsename)};
if(config.printlog==1){log(beerrors[k]+" √此解析有语法错误,跳过")};
if(testcheck==1){faillist.push(parsename)};
if(printlog==1){log(beerrors[k]+" √此解析有语法错误,跳过")};
for(var j=0;j<sortlist.length;j++){
if(sortlist[j].name == parsename){
sortlist[j].sort = sortlist[j].sort+1;
@ -600,8 +601,8 @@ var aytmParse = function (vipUrl,parseStr) {
uniq(faillist);//去除重复
if (x5jxlist.length == 0) {
hideLoading();
if(config.printlog==1){
if(config.testcheck==1){
if(printlog==1){
if(testcheck==1){
log('√检测结束');
log('√解析失败的>'+faillist);
refreshPage(false);
@ -609,7 +610,7 @@ var aytmParse = function (vipUrl,parseStr) {
log('√JS免嗅和URL明码接口失败、网页嗅探未取到解析口,需重新配置插件')
}
};
if(config.testcheck==1){
if(testcheck==1){
if (parseStr == undefined) {
if(faillist.length>0){
return $("检测结束,是否处理失败的解析?").confirm((faillist,helper)=>{
@ -630,15 +631,15 @@ var aytmParse = function (vipUrl,parseStr) {
return "toast://未找到可用的解析口"
}
} else {
if(config.printlog==1){if(config.testcheck==1){log("√JS免嗅和URL明码检测结束,转网页嗅探检测接口数:"+x5jxlist.length)}else{log("√JS免嗅和URL明码失败,转网页嗅探解析接口数:"+x5jxlist.length)}};
if(config.printlog==1){log("√嗅探调用解析口:"+x5nmlist[0])};
if(config.testcheck==1){showLoading('嗅探解析列表,检测中')}else{showLoading('√嗅探解析中,请稍候')};
let parmset = {"issort":0,"printlog":config.printlog,"timeout":config.x5timeout,"autoselect":config.autoselect,"failcount":config.failcount,"from":from,"testcheck":config.testcheck,"parseStr":parseStr,"helper":getMyVar('helper','0'),"Sversion":parseInt(getMyVar('Sversion','0'))};
if(printlog==1){if(testcheck==1){log("√JS免嗅和URL明码检测结束,转网页嗅探检测接口数:"+x5jxlist.length)}else{log("√JS免嗅和URL明码失败,转网页嗅探解析接口数:"+x5jxlist.length)}};
if(printlog==1){log("√嗅探调用解析口:"+x5nmlist[0])};
if(testcheck==1){showLoading('嗅探解析列表,检测中')}else{showLoading('√嗅探解析中,请稍候')};
let parmset = {"issort":0,"printlog":printlog,"timeout":SAconfig.x5timeout,"autoselect":SAconfig.autoselect,"failcount":SAconfig.failcount,"from":from,"testcheck":testcheck,"parseStr":parseStr,"helper":getMyVar('helper','0'),"Sversion":parseInt(getMyVar('Sversion','0'))};
for(var i = 0; i < x5nmlist.length; i++) {
faillist.push(x5nmlist[i]);
}
config['x5scslist'] = [];
writeFile("hiker://files/cache/SrcSet.js", 'var userconfig = ' + JSON.stringify(config));
SAconfig['x5scslist'] = [];
writeFile("hiker://files/cache/SrcSet.js", 'var userconfig = ' + JSON.stringify(SAconfig));
return x5Player(x5jxlist,x5nmlist,vipUrl,sortlist,parmset,faillist,SrcParseS.formatUrl);
}
} else {
@ -654,14 +655,14 @@ var aytmParse = function (vipUrl,parseStr) {
}
}
} catch (e) {
if(config.printlog==1){log("√语法错误")};
if(printlog==1){log("√语法错误")};
return 'toast://解析失败,语法错误';
}
};
//x5嗅探通用免嗅函数、自动多层嵌套
function x5Player(x5jxlist, x5nmlist, vipUrl, sortlist, parmset, faillist, formatUrl) {
return 'x5Rule://' + x5jxlist[0] + vipUrl + '@' + (typeof $$$ == 'undefined' ? $ : $$$).toString((x5jxlist, x5nmlist, vipUrl, sortlist, parmset, faillist, formatUrl, x5Player) => {
return 'webRule://' + x5jxlist[0] + vipUrl + '@' + (typeof $$$ == 'undefined' ? $ : $$$).toString((x5jxlist, x5nmlist, vipUrl, sortlist, parmset, faillist, formatUrl, x5Player) => {
if(typeof(request)=='undefined'||!request){
eval(fba.getInternalJs());
};

Loading…
Cancel
Save