From c897a2122d41befb9e9b2ad57f74ade3ad64e485 Mon Sep 17 00:00:00 2001 From: jevons0411 Date: Thu, 15 Sep 2022 17:43:55 +0800 Subject: [PATCH] Update SrcJyAuto.js --- SrcJyAuto.js | 122 ++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 106 insertions(+), 16 deletions(-) diff --git a/SrcJyAuto.js b/SrcJyAuto.js index ad16b034..274d4f95 100644 --- a/SrcJyAuto.js +++ b/SrcJyAuto.js @@ -303,8 +303,11 @@ var aytmParse = function (vipUrl,parseStr) { var parsename = ""; var parseurl = ""; var lx = ""; - var Jparselist = []; - var Uparselist = []; + var parselist = []; + //var Jparselist = []; + //var Uparselist = []; + var Jparsenum = 0; + var Uparsenum = 0; var x5jxlist = []; //x5嗅探接口存放数组 var x5nmlist = []; //x5嗅探接口存放数组 var dellist = []; @@ -365,12 +368,18 @@ var aytmParse = function (vipUrl,parseStr) { if(stopfrom.indexOf(from)==-1){ //自动筛选模式时,sort只做排序使用,不包含停用片源的解析,则加入解析接口组 if(lx=="J"){ - let parsearr = { "id" : i,"sort" : sort, "name" : parsename }; - Jparselist.push(parsearr); + //let parsearr = { "id" : i,"sort" : sort, "name" : parsename }; + //Jparselist.push(parsearr); + let arr = { "id": i,"sort": sort, "name": parsename, "lx": "J" }; + parselist.push(arr); + Jparsenum ++; } if(lx=="U"){ - let urlarr = { "id" : i,"sort" : sort, "name" : parsename, "url" : parseurl }; - Uparselist.push(urlarr); + //let urlarr = { "id" : i,"sort" : sort, "name" : parsename, "url" : parseurl }; + //Uparselist.push(urlarr); + let arr = { "id": i,"sort": sort, "name": parsename, "url": parseurl, "lx": "U" }; + parselist.push(arr); + Uparsenum ++; } }else{ if(stopfrom.length>=config.fromcount&&stopfrom.indexOf(from)>-1){ @@ -385,12 +394,18 @@ var aytmParse = function (vipUrl,parseStr) { }else{ //非自动筛选解析时按失败次数,小于设置的次数、且解析接口名有效,加入解析接口组 if(lx=="J"){ - let parsearr = { "id" : i,"sort" : sort, "name" : parsename }; - Jparselist.push(parsearr); + //let parsearr = { "id" : i,"sort" : sort, "name" : parsename }; + //Jparselist.push(parsearr); + let arr = { "id": i,"sort": sort, "name": parsename, "lx": "J" }; + parselist.push(arr); + Jparsenum ++; } if(lx=="U"){ - let urlarr = { "id" : i,"sort" : sort, "name" : parsename, "url" : parseurl }; - Uparselist.push(urlarr); + //let urlarr = { "id" : i,"sort" : sort, "name" : parsename, "url" : parseurl }; + //Uparselist.push(urlarr); + let arr = { "id": i,"sort": sort, "name": parsename, "url": parseurl, "lx": "U" }; + parselist.push(arr); + Uparsenum ++; } } } @@ -401,15 +416,22 @@ var aytmParse = function (vipUrl,parseStr) { writeFile("hiker://files/cache/SrcSet.js", 'var userconfig = ' + JSON.stringify(config)) if(config.printlog == 1){log("√建议删除解析口:"+dellist);} } - if(Jparselist.length == 0 && Uparselist.length == 0){ + //if(Jparselist.length == 0 && Uparselist.length == 0){ + if(parselist.length == 0){ if(config.printlog==1){log("√没有可用的解析接口,需重新配置")}; hideLoading(); return 'toast://解析口全部无效了,重新配置吧'; + }else{ + //解析接口排序,将之前失败的排在后面 + parselist.sort(sortData) } - //解析接口排序,将之前失败的排在后面 - if(Jparselist.length > 0){Jparselist.sort(sortData)}; - if(Uparselist.length > 0){Uparselist.sort(sortData)}; - if(config.printlog==1){log("√有效解析接口数:"+(Jparselist.length+Uparselist.length))}; + //解析接口排序,将之前失败的排在后面 + //if(Jparselist.length > 0){Jparselist.sort(sortData)}; + //if(Uparselist.length > 0){Uparselist.sort(sortData)}; + //if(config.printlog==1){log("√有效解析接口数:"+(Jparselist.length+Uparselist.length))}; + if(config.printlog==1){ + log("√有效解析数:"+parselist.length+",JS解析:"+Jparsenum+",URL解析:"+Uparsenum) + }; var exclude = /404\.m3u8|xiajia\.mp4|余额不足\.m3u8/;//设置排除地址 var contain = /\.mp4|\.m3u8|\.flv|\.avi|\.mpeg|\.wmv|\.mov|\.rmvb|\.dat|qqBFdownload|mime=video%2F|video_mp4/;//设置符合条件的正确地址 @@ -428,6 +450,74 @@ var aytmParse = function (vipUrl,parseStr) { } if(config.testcheck==1){multiline=10} + //明码解析线程代码 + var parsetask = function(obj) { + if(/^function/.test(obj.ulist.parse.trim())){ + eval('var JSparse = '+obj.ulist.parse) + var rurl = JSparse(obj.vipUrl); + if(obj.testurl(rurl,obj.ulist.name)==0){ + rurl = ""; + } + obj.ulist['x5'] = 0; + return {url: rurl,ulist: obj.ulist}; + }else{ + var taskheader = {withStatusCode:true,timeout:5000}; + let head = obj.ulist.header||{}; + if(JSON.stringify(head) != "{}"){ + taskheader['header'] = head; + } + var getjson = JSON.parse(request(obj.ulist.parse+obj.vipUrl,taskheader)); + if (getjson.body&&getjson.statusCode==200){ + var gethtml = getjson.body; + var rurl = ""; + try { + rurl = JSON.parse(gethtml).url||JSON.parse(gethtml).data.url||JSON.parse(gethtml).data; + } catch (e) { + if(/\.m3u8|\.mp4/.test(getjson.url)&&getjson.url.indexOf('=http')==-1){ + rurl = getjson.url; + }else if(/\.m3u8|\.mp4|\.flv/.test(gethtml)){ + try { + if(gethtml.indexOf('urls = "') != -1){ + rurl = gethtml.match(/urls = "(.*?)"/)[1]; + }else if(gethtml.indexOf('"url":"') != -1){ + rurl = gethtml.match(/"url":"(.*?)"/)[1]; + }else if(gethtml.indexOf('id="video" src="') != -1){ + rurl = gethtml.match(/id="video" src="(.*?)"/)[1]; + }else if(gethtml.indexOf('url: "') != -1){ + rurl = gethtml.match(/url: "(.*?)"/)[1]; + }else{ + //if(printlog==1){log('将日志提交给作者,帮助完善解析逻辑>>>'+gethtml)}; + } + } catch (e) { + if(printlog==1){log('明码获取错误:'+e.message)}; + } + } + } + var x5 = 0; + if(rurl == ""){ + if(!/404 /.test(gethtml)&&obj.ulist.parse.indexOf('key=')==-1){ + if(x5jxlist.length<=5){ + x5jxlist.push(obj.ulist.parse); + if(printlog==1){log(obj.ulist.name + '>加入x5嗅探列表');} + x5namelist.push(obj.ulist.name); + } + x5 = 1; + } + }else{ + if(obj.testurl(rurl,obj.ulist.name)==0){ + rurl = ""; + } + } + obj.ulist['x5'] = x5; + return {url: rurl,ulist: obj.ulist}; + }else{ + obj.ulist['x5'] = 0; + return {url: "",ulist: obj.ulist}; + } + } + }; + + /* if(Jparselist.length>0){ if(config.testcheck==1){showLoading('JS免嗅解析列表,检测中')}; if(config.printlog==1){log("√进入JS列表,接口数:"+Jparselist.length)}; @@ -703,7 +793,7 @@ var aytmParse = function (vipUrl,parseStr) { } }//批量结果循环 } - } + }*/ if(issort==1&&isparse==0){writeFile("hiker://files/cache/SrcSort.json", JSON.stringify(sortlist))}; //上面js免嗅、json解析、剔除打不开网站做完了