From 73480a332d7c35dbed6cd638b8f5ad9945f53296 Mon Sep 17 00:00:00 2001 From: src48597962 <48597962@qq.com> Date: Sun, 25 Sep 2022 12:27:17 +0000 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20'srcDyTmpl.js'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- srcDyTmpl.js | 3462 +++++++++++++++++++++++++------------------------- 1 file changed, 1731 insertions(+), 1731 deletions(-) diff --git a/srcDyTmpl.js b/srcDyTmpl.js index 4ee38a9c..237e14f5 100644 --- a/srcDyTmpl.js +++ b/srcDyTmpl.js @@ -1,1732 +1,1732 @@ -//一级 -function yiji() { - Version(); - addListener("onClose", $.toString(() => { - clearMyVar('isverifyA'); - })); - - var d = []; - var author = MY_RULE.author; - var SrcQJJX = getItem('SrcQJJX', '1'); - var SrcGJFS = getItem('SrcGJFS', '3'); - var SrcXTNH = getItem('SrcXTNH', 'web'); - var SrcM3U8 = getItem('SrcM3U8', '1'); - try { - var isAPP = 是否APP; - } catch (e) { - var isAPP = 0; - } - - if (isAPP != 1) { - var list = parseDomForArray(getResCode(), 列表); - if (config.debug == "1") { log(list) } - for (var i in list) { - try { - d.push({ - title: parseDomForHtml(list[i], 标题), - desc: parseDomForHtml(list[i], 描述), - pic_url: 图片.indexOf('@') == -1 ? parseDom(list[i], 图片) + "@Referer=" : 图片.split('@')[1] == "-" ? parseDom(list[i], 图片.split('@')[0]) : parseDom(list[i], 图片.split('@')[0]) + "@" + 图片.split('@')[1], - url: "hiker://empty##" + parseDom(list[i], 链接) + "#immersiveTheme#", - extra: { - pic: parseDom(list[i], 图片.split('@')[0]), - author: author, - SrcQJJX: SrcQJJX, - SrcGJFS: SrcGJFS, - SrcXTNH: SrcXTNH, - SrcM3U8: SrcM3U8 - } - }); - } catch (e) { } - } - } else { - //APP - try { - var url_api = 接口API; - } catch (e) { - var url_api = MY_RULE.sort_url; - } - var urls = MY_URL.split('##'); - if (url_api == "" || !/^http/.test(url_api)) { - url_api = urls[1]; - } - - if (url_api.indexOf('v1.vod') > -1) { - var url = url_api + '/detail?vod_id='; - MY_URL = url_api + urls[2].replace('video?tid=', '?type=');// + '?type=fyclass&pg=fypage&page=fypage&limit=20&area=fyarea&lass=&year=fyyear';//v1 - } else { - var url = url_api + 'video_detail?id='; - MY_URL = url_api + urls[2];// + 'video?tid=fyclass&pg=fypage&page=fypage&limit=20&area=fyarea&lass=&year=fyyear';//app - } - - try { - var MYUA = 指定UA; - } catch (e) { - var MYUA = 'Dalvik/2.1.0';//Dart/2.13(dart:io) - } - try { - var html = JSON.parse(request(MY_URL, { headers: { 'User-Agent': MYUA } })); - } catch (e) { - d.push({ - title: 'APP接口访问出错,可通过编辑小程序,修改接口API地址
目前支持V1和app类型
比如:http://xxxxxxx/api.php/v1.vod', - col_type: 'rich_text' - }); - var html = { data: { list: [] } }; - } - try { - var list = html.data.list; - } catch (e) { - try { - var list = html.list; - } catch (e) { - var list = html.data; - } - } - if (config.debug == "1") { log(list) } - try { - for (var i in list) { - d.push({ - title: list[i].vod_name, - desc: list[i].vod_remarks, - pic_url: list[i].vod_pic + "@Referer=", - url: 'hiker://empty##' + url + list[i].vod_id + "#immersiveTheme#", - col_type: 'movie_3', - extra: { - pic: list[i].vod_pic, - author: author, - SrcQJJX: SrcQJJX, - SrcGJFS: SrcGJFS, - SrcXTNH: SrcXTNH, - SrcM3U8: SrcM3U8 - } - }); - } - } catch (e) { } - } - putMyVar('author', author); - setResult(d); -} -//二级 -function erji() { - var d = []; - //加载本地自定义变量缓存文件 - var configfile = config.依赖.match(/https.*\//)[0] + 'srcconfig.js'; - require(configfile); - addListener("onClose", $.toString(() => { - clearMyVar('是否APP'); - })); - try { - var isAPP = 是否APP; - } catch (e) { - var isAPP = 0; - } - - //自动判断是否需要更新请求 - if (getMyVar('myurl', '0') != MY_URL || !configvar.详情1 || configvar.标识 != MY_URL) { - if (MY_URL.indexOf('hiker://empty##') > -1) { - if (isAPP == 0) { - try { - var MYUA = 指定UA; - } catch (e) { - var MYUA = MY_RULE.ua=="pc"?PC_UA:MOBILE_UA; - } - var html = request(MY_URL.split('##')[1], { - headers: { - 'User-Agent': MYUA - } - }); - } else { - try { - var MYUA = 指定UA; - } catch (e) { - var MYUA = 'Dalvik/2.1.0'; - } - var html = JSON.parse(request(MY_URL.split('##')[1], { headers: { 'User-Agent': MYUA } })); - } - } else { - if (isAPP == 0) { - var html = getResCode(); - } else { - var html = JSON.parse(getResCode()); - } - } - var zt = 1; - putMyVar('myurl', MY_URL); - } else { - var zt = 0; - } - - //影片详情 - if (zt == 1) { - var details1 = ""; - var details0 = ""; - var details2 = ""; - var pic = ""; - var filter = ""; - - if (isAPP == 0) { - try { - if (项目值 == '') { var itemValue = 1 } else { var itemValue = 项目值 } - } catch (e) { var itemValue = 1 } - try { - if (项目1 != "") { - if (itemValue == 1) { - if(项目2 != ""){ - details1 = parseDomForHtml(html, 项目1).substr(0, 15) + '\n' - }else{ - details1 = parseDomForHtml(html, 项目1) - } - } else { - details1 = 项目1 + '\n'; - } - } - } catch (e) { details1 = '项目1,获取失败\n' } - try { - if (项目2 != "") { - if (itemValue == 1) { - details1 += parseDomForHtml(html, 项目2).substr(0, 15) + '\n' - } else { - details1 += 项目2 + '\n'; - } - } - } catch (e) { details1 += '项目2,获取失败\n' } - try { - if (项目3 != "") { - if (itemValue == 1) { - details0 += parseDomForHtml(html, 项目3) + ' ' - } else { - details0 += 项目3 + ' ' - } - } - } catch (e) { details1 += '项目3,获取失败'; if (项目4 == "") { details1 += '\n' } } - try { - if (项目4 != "") { - if (itemValue == 1) { - if (details0 != "" && details0.length <= 10) { details0 += parseDomForHtml(html, 项目4) } else if (项目5 == "") { details2 += parseDomForHtml(html, 项目4).substr(0, 15) + '\n' } - } else { - if (details0 != "" && details0.length <= 10) { details0 += 项目4 } else if (项目5 == "") { details2 += 项目4 + '\n' } - } - } - } catch (e) { details1 += '项目4,获取失败\n' } - try { - if (项目5 != "") { - if (itemValue == 1) { - details2 += parseDomForHtml(html, 项目5) + '\n' - } else { - details2 += 项目5 + '\n' - } - } - } catch (e) { details2 += '项目5,获取失败\n' } - try { - if (项目6 != "") { - if (itemValue == 1) { - details2 += parseDomForHtml(html, 项目6) - } else { - details2 += 项目6 - } - } - } catch (e) { details2 += '项目6,获取失败' } - try { - if (图片 != "") { - if (itemValue == 1) { - pic = parseDom(html, 图片) - } else { - pic = 图片 - } - } else { - pic = MY_PARAMS.pic - } - } catch (e) { pic = MY_PARAMS.pic } - try { - if (过虑 != "") { - filter = "/" + 过虑 + "/g"; - } - } catch (e) { - filter = ""; - } - if (details0 != "") { details1 += details0.substr(0, 15) }; - details1 = details1.replace(eval(filter), ''); - details2 = details2.replace(eval(filter), ''); - if (config.debug == "1") { - log(details1); - log(details2); - } - } else { - //app - let actor = html.data.vod_actor || "空白"; - let director = html.data.vod_director || "空白"; - let area = html.data.vod_area || "空白"; - let year = html.data.vod_year || "空白"; - let remarks = html.data.vod_remarks || ""; - let pubdate = html.data.vod_pubdate || html.data.vod_class || ""; - details1 = '主演:' + actor.substring(0, 12) + '\n导演:' + director.substring(0, 12) + '\n地区:' + area + ' 年代:' + year; - details2 = remarks + '\n' + pubdate; - pic = html.data.vod_pic || MY_PARAMS.pic; - } - - } else { - var details1 = configvar.详情1; - var details2 = configvar.详情2; - var pic = configvar.图片; - try { - if (过虑 != "") { - filter = "/" + 过虑 + "/g"; - } - } catch (e) { - filter = ""; - } - } - d.push({ - title: details1,//详情1 - desc: details2,//详情2 - pic_url: pic + '@Referer=',//图片 - url: pic + '#noHistory#',//链接 - col_type: 'movie_1_vertical_pic_blur', - extra: { - gradient: true - } - }); - //简介详情 - if (zt == 1) { - try { - if (isAPP == 0) { - if (itemValue == 1) { - var desc = parseDomForHtml(html, 简介).replace(eval(filter), '') || ""; - } else { - var desc = 简介; - } - } else { - var desc = html.data.vod_blurb; - } - if (desc == '' || desc == undefined) { desc = '...' } - } catch (e) { - var desc = '...'; - } - } else { - var desc = configvar.简介 - } - d.push({ - title: '‘‘’’简介:' + desc.substr(0, 65) + '......查看详情', - url: $('hiker://empty#noHistory#').rule(param => { - setHomeResult([{ - title: '影片简介:\n' + param, - col_type: 'long_text' - }]); - }, desc), - col_type: 'text_1' - }); - - //线路数组定位 - if (zt == 1) { - if (isAPP == 0) { - var arts = parseDomForArray(html, 线路列表); - } else { - //var arts = eval(线路列表); - var arts = html.data.vod_url_with_player || html.data.vod_play_list; - - } - } else { - var arts = configvar.线路; - } - - var tabs = []; - for (var i in arts) { - if (isAPP == 0) { - tabs.push(parseDomForHtml(arts[i], 单个线路).replace(//g, '').replace(/ /g, '').replace(/ /g, '').replace(eval(filter), '')) - } else { - let line = arts[i].name || arts[i].player_info.show; - tabs.push(line); - - if (getMyVar(MY_URL, '0') == i) { - var parse_api = ""; - try { - let parse1 = arts[i].player_info.parse; - let parse2 = arts[i].player_info.parse2; - if (parse2.indexOf('//') == -1) { - parse_api = parse1; - } else if (parse1.indexOf('//') == -1) { - parse_api = parse2; - } else { - parse_api = parse2 + ',' + parse1; - } - } catch (e) { - parse_api = arts[i].parse_api; - } - if (parse_api != "" && parse_api != undefined) { - parse_api = parse_api.replace(/\.\./g, '.').replace(/。\./g, '.'); - } - //log(parse_api); - } - } - } - - //选集数组定位 - if (zt == 1) { - if (isAPP == 0) { - var conts = parseDomForArray(html, 影片列表); - } else { - var conts = arts; - } - var newconfig = { 详情1: details1, 详情2: details2, 图片: pic, 简介: desc, 线路: arts, 影片: conts, 标识: MY_URL }; - var libsfile = 'hiker://files/libs/' + md5(configfile) + '.js'; - writeFile(libsfile, 'var configvar = ' + JSON.stringify(newconfig)); - } else { - var conts = configvar.影片; - } - - var lists = []; - for (var i in conts) { - if (isAPP == 0) { - lists.push(parseDomForArray(conts[i], 单个影片)) - } else { - let single = conts[i].url; - lists.push(single.split('#')); - putMyVar('是否APP','1'); - } - } - - //取之前足迹记录,用于自动定位之前的线路 - try { - eval('var SrcMark = ' + fetch("hiker://files/cache/SrcMark.json")); - if (SrcMark != "") { - if (SrcMark.route[MY_URL] != undefined) { - putMyVar(MY_URL, SrcMark.route[MY_URL]); - } - } - } catch (e) { } - var Marksum = 30;//设置记录线路足迹数量 - - //线路部份 - var Color = "#f13b66a"; - var Color1 = "#098AC1"; - function getHead(title) { - return '‘‘’’' + title + ''; - } - for (let i = 0; i < 9; i++) { - d.push({ - col_type: "blank_block" - }) - } - - //动态解析处理 - try { - if (typeof (lazy) == "undefined") { - putMyVar('islazy', '0');//模板解析 - } else { - putMyVar('islazy', '1'); - if (lazy.indexOf('.官网(') > -1 || lazy.indexOf('.智能(') > -1) { - putMyVar('官网', '1'); - } - } - //初始参数 - let SrcQJJX = getMyVar('islazy') == "0" ? "2" : MY_PARAMS.SrcQJJX; - let SrcGJFS = getMyVar('islazy') == "1" && getMyVar('官网') == "1" ? "1" : MY_PARAMS.SrcGJFS; - let SrcXTNH = MY_PARAMS.SrcXTNH; - let SrcM3U8 = MY_PARAMS.SrcM3U8; - let author = MY_PARAMS.author; - if (SrcQJJX != undefined && getMyVar('SrcQJJX') == "") { putMyVar('SrcQJJX', SrcQJJX) }; - if (SrcGJFS != undefined && getMyVar('SrcGJFS') == "") { putMyVar('SrcGJFS', SrcGJFS) }; - if (SrcXTNH != undefined && getMyVar('SrcXTNH') == "") { putMyVar('SrcXTNH', SrcXTNH) }; - if (SrcM3U8 != undefined && getMyVar('SrcM3U8') == "") { putMyVar('SrcM3U8', SrcM3U8) }; - if (author != undefined && getMyVar('author') == "") { putMyVar('author', author) }; - - if (getMyVar('islazy') == "0" || getMyVar('SrcQJJX', '1') == "2") {//调用模板自带嗅探 - if (isAPP == 0) { - var DTJX = $("").lazyRule(() => { - require(config.依赖.match(/https.*\//)[0] + 'SrcParseS.js'); - return SrcParseS.嗅探(input); - }); - } else { - putMyVar('parse_api', parse_api); - var DTJX = $("").lazyRule(() => { - require(config.依赖); - return SrcParseS.APP(input); - }); - } - } else { - var DTJX = lazy; - } - } catch (e) { } - - evalPrivateJS("AkyT29hQhE2hj4xfBSaOzESMpZFDqEdZ2Xu0kej8K51ytFeKHIxV46v8CHrJJGPAduhW7VMUV64WbjMOom5QpEBJQLQhmp0bJIMGysk+i/4xl6mkiLKsEu3B02ciwUk4acBiZ8Uk9ZTs9Xmfg4gLHsuLhG0mWRN7mLi08sJdFAgPFEGPBxeUOTHTPU7hSbwuZn5OQ3gXavGrZmxBztmFtEzNW1tZDX+gGjSQGWpDLxwv5jQN/ALzFkfVCl0Yw1MmhqjWKvunyflUuEJytDIelchqs9EBesQANq6QQSIbtESG/yD7SENPjo3TGAwE2x2TGf1Nl+qm3A2XmEQbe44L2hepCpN3ToVBVOexrW+BTjQ=") - - function setTabs(tabs, vari) { - d.push({ - title: '‘‘♥’’', - url: $("#noHistory##noRecordHistory#hiker://empty").rule((SRCSet, setupPages) => { - SRCSet(setupPages); - }, SRCSet, setupPages), - col_type: 'scroll_button' - }); - for (var i in tabs) { - if (tabs[i] != "") { - d.push({ - title: getMyVar(vari, '0') == i ? getHead(tabs[i] + '↓') : tabs[i], - url: $("#noLoading#").lazyRule((vari, i, Marksum) => { - if (parseInt(getMyVar(vari, '0')) != i) { - try { - eval('var SrcMark = ' + fetch("hiker://files/cache/SrcMark.json")); - } catch (e) { - var SrcMark = ""; - } - if (SrcMark == "") { - SrcMark = { route: {} }; - } else if (SrcMark.route == undefined) { - SrcMark.route = {}; - } - SrcMark.route[vari] = i; - var key = 0; - var one = ""; - for (var k in SrcMark.route) { - key++; - if (key == 1) { one = k } - } - if (key > Marksum) { delete SrcMark.route[one]; } - writeFile("hiker://files/cache/SrcMark.json", JSON.stringify(SrcMark)); - putMyVar(vari, i); - refreshPage(false); - return 'toast://切换成功' - } else { - return '#noHistory#hiker://empty' - } - }, vari, i, Marksum), - col_type: 'scroll_button' - }) - } - } - } - setTabs(tabs, MY_URL); - - //选集部份 - if (getMyVar('shsort') == '1') { var sx = '‘‘’’排序'; } else { var sx = '‘‘’’排序'; } - function setLists(lists, index) { - d.push({ - title: '‘‘’’选集列表' + '\t\t\t\t\t\t\t\t\t\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 + '', - url: $("#noLoading#").lazyRule(() => { - if (getMyVar('shsort') == '1') { putMyVar('shsort', '0'); } else { putMyVar('shsort', '1') }; - refreshPage(false); - return 'toast://切换排序成功' - }), - col_type: 'text_center_1' - }) - - var list = lists[index]; - function playlist(lx, len) {//定义选集列表生成 - if (lx == '1') { - if (isAPP == 0) { - var playtitle = parseDomForHtml(list[j], 'a&&Text'); - var playurl = parseDom(list[j], 'a&&href'); - } else { - var playtitle = list[j].split('$')[0]; - var playurl = list[j].split('$')[1]; - } - d.push({ - title: playtitle.replace(/第|集|话|期|-/g, ''), - url: playurl + DTJX, - extra: { id: playurl, referer: playurl, ua: PC_UA, jsLoadingInject: true, blockRules: ['.m4a', '.mp3', '.mp4', '.m3u8', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', '.css'] }, - col_type: list.length > 4 && len < 7 ? 'text_4' : 'text_3' - }); - } else { - d.push({ - title: '此影片无播放选集!', - url: '#noHistory#hiker://empty', - col_type: 'text_center_1' - }); - } - - } - if (list == undefined || list.length == 0) { - playlist('0'); - } else { - if (isAPP == 1) { - var listone = list[0].split('$')[0]; - } else { - var listone = parseDomForHtml(list[0], 'a&&Text'); - } - if (listone != "") { - var len = listone.length; - } - if (getMyVar('shsort') == '1') { - try { - for (var j = list.length - 1; j >= 0; j--) { - playlist('1', len); - } - } catch (e) { - playlist('0'); - } - } else { - try { - for (var j = 0; j < list.length; j++) { - playlist('1', len); - } - } catch (e) { - playlist('0'); - } - - } - } - } - setLists(lists, getMyVar(MY_URL, '0')); - //底部说明 - d.push({ - desc: '‘‘’’此规则仅限学习交流使用,请于导入后24小时内删除,任何团体或个人不得以任何方式方法传播此规则的整体或部分!', - url: 'toast://温馨提示:且用且珍惜!', - col_type: 'text_center_1' - }); - setResult(d); -} - -//搜索 -function sousuo(isverify,verifylx,waittime) { - var d = []; - var author = getMyVar('author', '0'); - var SrcQJJX = getItem('SrcQJJX', '1'); - var SrcGJFS = getItem('SrcGJFS', '2'); - var SrcXTNH = getItem('SrcXTNH', 'web'); - var SrcM3U8 = getItem('SrcM3U8', '1'); - try { - var isAPP = 是否APP; - } catch (e) { - var isAPP = 0; - } - - if (isAPP != 1) { - if(MY_URL.indexOf('empty##') > -1){ - var empty = 1; - }else{ - var empty = 0; - } - MY_URL = MY_URL.replace('hiker://empty##',''); - - try { - var MYUA = 指定UA; - } catch (e) { - var MYUA = MY_RULE.ua=="pc"?PC_UA:MOBILE_UA; - } - let headers = { - "User-Agent": MYUA - }; - verifylx = verifylx||(typeof (验证码) != "undefined"?"B":"A"); - waittime = (waittime*1000)||200; - var cookiename = MY_RULE.title+'cookie'; - if(getVar("SrcCookie")){ - putMyVar(cookiename,getVar("SrcCookie")); - clearVar("SrcCookie"); - } - - if(isverify==true&&!getMyVar(cookiename)){ - if(verifylx == "A"){ - log('网站有验证:进入手动过验证1'); - putMyVar('isverifyA','1'); - d.push({ - title:waittime>=1000?'点击前往验证,完成后过'+waittime/1000+'秒下拉刷新':'点击前往验证,完成后下拉刷新', - url: $("hiker://empty#noRecordHistory##noHistory#").rule((verify,url,headers,time)=>{ - verify(url, headers, time, 1); - },verify.A,MY_URL,JSON.stringify(headers),waittime), - extra: { id: "sousuo_verify" } - }) - }else{ - let cook = fetchCookie(验证码, { - headers: headers - }); - let cookie = JSON.parse(cook||'[]'); - putMyVar(cookiename, cookie.join(';')); - headers.Cookie = getMyVar(cookiename); - if(verify.B(验证码,认证链接,JSON.stringify(headers))=="ok"){ - log('网站有验证:自动过验证成功1'); - java.lang.Thread.sleep(waittime); - }else{ - log('网站有验证:自动过验证失败1'); - } - } - } - - if(getMyVar(cookiename)){ - headers.Cookie = getMyVar(cookiename); - } - - if(empty == 1){ - var html = request(MY_URL, { - headers: headers - }); - }else{ - var html = getResCode(); - } - - if (html.indexOf('检测中') != -1) { - html = request(MY_URL + '?btwaf' + html.match(/btwaf(.*?)\"/)[1], { - headers: headers - }); - } - - if (getMyVar('isverifyA','0')=="0"&&html.indexOf('系统安全验证') > -1) { - if(!isverify || verifylx == "A"){ - clearMyVar('isverifyA'); - log('网站有验证:进入手动过验证2'); - d.push({ - title:waittime>=1000?'点击前往验证,完成后过'+waittime/1000+'秒下拉刷新':'点击前往验证,完成后下拉刷新', - url: $("hiker://empty#noRecordHistory##noHistory#").rule((verify,url,headers,time)=>{ - verify(url, headers, time, 1); - },verify.A,MY_URL,JSON.stringify(headers),waittime) - }) - - }else{ - if(verify.B(验证码,认证链接,JSON.stringify(headers))=="ok"){ - log('网站有验证:自动过验证成功2'); - java.lang.Thread.sleep(waittime); - html = fetch(MY_URL, { - headers: headers - }); - }else{ - log('网站有验证:自动过验证失败2'); - d.push({ - title:'验证码自动识别出错,下拉刷新再次偿试', - url: "toast://验证码自动识别出错,下拉刷新再次偿试" - }) - } - } - } - if(/搜索时间间隔/.test(html)){ - d.push({ - title:'搜索有时间间隔,过几秒后再下拉刷新', - url: "toast://搜索有时间间隔,过几秒后再下拉刷新" - }) - } - - //log(html); - var list = parseDomForArray(html, 列表); - for (var i in list) { - try { - d.push({ - title: parseDomForHtml(list[i], 标题), - desc: parseDomForHtml(list[i], 描述), - content: parseDomForHtml(list[i], 内容), - pic_url: parseDom(list[i], 图片) + "@Referer=", - url: "hiker://empty##" + parseDom(list[i], 链接) + "#immersiveTheme#", - extra: { - pic: parseDom(list[i], 图片), - author: author, - SrcQJJX: SrcQJJX, - SrcGJFS: SrcGJFS, - SrcXTNH: SrcXTNH, - SrcM3U8: SrcM3U8 - } - }); - } catch (e) { } - } - } else { - //APP - try { - var url_api = 接口API; - } catch (e) { - var url_api = ""; - } - var urls = MY_URL.split('##'); - if (url_api == "" || !/^http/.test(url_api)) { - url_api = urls[1]; - } - if (url_api.indexOf('v1.vod') > -1) { - var url = url_api + '/detail?vod_id='; - MY_URL = url_api + urls[2].replace('search?text=', '?wd=');//http://lanmao.lanmaoymw.cn/ruifenglb_api.php/v1.vod?wd=**&page=fypage&limit=10//v1 - } else { - var url = url_api + 'video_detail?id='; - MY_URL = url_api + urls[2];//http://television.wkfile.com/api.php/app/search?text=**&pg=fypage&limit=10//app - } - try { - var MYUA = 指定UA; - } catch (e) { - var MYUA = 'Dalvik/2.1.0'; - } - try { - var html = JSON.parse(request(MY_URL, { headers: { 'User-Agent': MYUA } })); - } catch (e) { - d.push({ - title: 'APP接口访问出错,无法获取数据', - col_type: 'rich_text' - }); - var html = { data: { list: [] } }; - } - try { - var list = html.data.list; - } catch (e) { - try { - var list = html.list; - } catch (e) { - var list = html.data; - } - } - - try { - for (var i in list) { - d.push({ - title: list[i].vod_name, - desc: list[i].type_name + ' ' + list[i].vod_remarks + ' ' + list[i].vod_year, - content: list[i].vod_content, - pic_url: list[i].vod_pic + "@Referer=", - url: 'hiker://empty##' + url + list[i].vod_id + "#immersiveTheme#", - extra: { - pic: list[i].vod_pic, - author: author, - SrcQJJX: SrcQJJX, - SrcGJFS: SrcGJFS, - SrcXTNH: SrcXTNH, - SrcM3U8: SrcM3U8 - } - }); - } - } catch (e) { } - } - setResult(d) -} - -//最新章节 -function zuixin() { - try { - var isAPP = 是否APP; - } catch (e) { - var isAPP = 0; - } - - if (MY_URL.indexOf('hiker://empty##') > -1) { - if (isAPP == 0) { - try { - var MYUA = 指定UA; - } catch (e) { - var MYUA = MY_RULE.ua=="pc"?PC_UA:MOBILE_UA; - } - var html = request(MY_URL.split('##')[1], { - headers: { - 'User-Agent': MYUA - } - }); - } else { - var html = JSON.parse(request(MY_URL.split('##')[1], { headers: { 'User-Agent': 'Dalvik/2.1.0' } })); - } - } else { - if (isAPP == 0) { - var html = getResCode(); - } else { - var html = JSON.parse(getResCode()); - } - } - - if (isAPP == 1) { - var conts = html.data.vod_url_with_player || html.data.vod_play_list;//影片列表 - var list = conts[0].url.split('#');//影片定位 - var title = list[list.length - 1].split('$')[0]; - } else { - var conts = parseDomForArray(html, 影片列表)[0];//影片列表 - var list = parseDomForArray(conts, 单个影片);//影片定位 - var title = parseDomForHtml(list[list.length - 1], 'a&&Text'); - } - - setResult("更新至: " + title); -} - -//一级动态分类 -function yijidtfl(isverify,verifylx,waittime) { - Version(); - addListener("onClose", $.toString(() => { - clearMyVar('isverifyA'); - })); - var d = d || [] - var author = MY_RULE.author; - var SrcQJJX = getItem('SrcQJJX', '1'); - var SrcGJFS = getItem('SrcGJFS', '3'); - var SrcXTNH = getItem('SrcXTNH', 'web'); - var SrcM3U8 = getItem('SrcM3U8', '1'); - var 分类颜色 = '#3399cc'; - var page = MY_PAGE; - var true_url = getMyVar('header.url', MY_URL); - let 链接处理工具 = require(config.依赖.match(/https.*\//)[0] + 'plugins/UrlProcessor.js') - true_url = 链接处理工具 - .链接(true_url) - .页码(page) - .获取处理结果(); - MY_URL = true_url; - try { - var MYUA = 指定UA; - } catch (e) { - var MYUA = MY_RULE.ua=="pc"?PC_UA:MOBILE_UA; - } - let headers = { - "User-Agent": MYUA - }; - - verifylx = verifylx||(typeof (验证码) != "undefined"?"B":"A"); - waittime = (waittime*1000)||200; - var cookiename = MY_RULE.title+'cookie'; - if(getVar("SrcCookie")){ - putMyVar(cookiename,getVar("SrcCookie")); - clearVar("SrcCookie"); - } - if(isverify==true&&!getMyVar(cookiename)){ - if(verifylx == "A"){ - if(getMyVar('verifyA','0')=="0"){ - putMyVar('verifyA','1'); - log('网站有验证:进入手动过验证1'); - verify.A(MY_URL, JSON.stringify(headers), waittime); - } - }else{ - let cook = fetchCookie(验证码, { - headers: headers - }); - let cookie = JSON.parse(cook||'[]'); - putMyVar(cookiename, cookie.join(';')); - headers.Cookie = getMyVar(cookiename); - if(verify.B(验证码,认证链接,JSON.stringify(headers))=="ok"){ - log('网站有验证:自动过验证成功1'); - java.lang.Thread.sleep(waittime); - }else{ - log('网站有验证:自动过验证失败1'); - } - } - } - - if(getMyVar(cookiename)){ - headers.Cookie = getMyVar(cookiename); - } - - var html = fetch(MY_URL, { - headers: headers - }) - if (html.indexOf('检测中') != -1) { - html = fetch(MY_URL + '?btwaf' + html.match(/btwaf(.*?)\"/)[1], { - headers: headers - }); - } - if (html.indexOf('系统安全验证') > -1) { - if(!isverify || verifylx == "A"){ - if(getMyVar('verifyA','0')=="0"){ - putMyVar('verifyA','1'); - log('网站有验证:进入手动过验证2'); - verify.A(MY_URL, JSON.stringify(headers), waittime); - } - }else{ - if(verify.B(验证码,认证链接,JSON.stringify(headers))=="ok"){ - log('网站有验证:自动过验证成功2'); - java.lang.Thread.sleep(waittime); - html = fetch(MY_URL, { - headers: headers - }); - }else{ - log('网站有验证:自动过验证失败2'); - d.push({ - title:'验证码自动识别出错,下拉刷新再次偿试', - url: $("#noLoading#").lazyRule(() => { - refreshPage(false); - return 'toast://已刷新'; - }), - col_type: "text_1" - }) - } - } - } - - // '0' 为默认不折叠,'1' 为默认折叠 - const 当前折叠状态 = getMyVar('header.fold', '1') - - // 引入动态分类依赖 - // 框架已经稳定,使用 require 更佳 - let htmlCategories = require(config.依赖.match(/https.*\//)[0] + 'plugins/categories-header.js') - htmlCategories.界面(d) - .分类链接(true_url) - .源码(html) - .页码(page) - .添加分类定位(定位列表) - .开启内置折叠功能() // 必须 - .折叠按钮样式({ - title: 当前折叠状态 == "1" ? "‘‘️▼’’" : "‘‘▲’’" - }) // 可选 - .折叠(当前折叠状态) // 必须 - .选中的分类颜色(分类颜色) - .开始打造分类(); - var list = pdfa(html, 列表); - for (var i in list) { - try { - d.push({ - title: parseDomForHtml(list[i], 标题), - desc: parseDomForHtml(list[i], 描述), - pic_url: 图片.indexOf('@') == -1 ? parseDom(list[i], 图片) + "@Referer=" : 图片.split('@')[1] == "-" ? parseDom(list[i], 图片.split('@')[0]) : parseDom(list[i], 图片.split('@')[0]) + "@" + 图片.split('@')[1], - url: "hiker://empty##" + parseDom(list[i], 链接) + "#immersiveTheme#", - extra: { - pic: parseDom(list[i], 图片.split('@')[0]), - author: author, - SrcQJJX: SrcQJJX, - SrcGJFS: SrcGJFS, - SrcXTNH: SrcXTNH, - SrcM3U8: SrcM3U8 - } - }); - } catch (e) { } - } - 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; - } -} - -var SrcParseS = { - formatUrl: function (url, i) { - try { - if (url.trim() == "") { - return "toast://解析失败,建议切换线路或更换解析方式"; - } else { - if (url[0] == '/') { url = 'https:' + url } - if (i == undefined) { - if (getMyVar('SrcM3U8', '1') == "1") { - url = cacheM3u8(url); - } - if (/wkfile/.test(url)) { - url = url + ';{User-Agent@Mozilla/5.0&&Referer@https://fantuan.tv/}'; - } else if (/bilibili|bilivideo/.test(url)) { - url = url + ";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com/}"; - } else if (/shenglinyiyang\.cn/.test(url)) { - url = url + ";{User-Agent@Mozilla/5.0&&Referer@https://zyz.sdljwomen.com}"; - } - /* else { - url = url + ";{User-Agent@Mozilla/5.0}"; - }*/ - } else { - if (getMyVar('SrcM3U8', '1') == "1") { - url = cacheM3u8(url, {}, 'video' + parseInt(i) + '.m3u8') + '#pre#'; - } - } - return url + '#isVideo=true#'; - } - } catch (e) { - return url; - } - }, - 嗅探: function (vipUrl) { - showLoading('√嗅探解析中,请稍候'); - return (getMyVar('SrcXTNH', 'web') == 'x5' ? 'x5Rule://' : 'webRule://') + vipUrl + '@' + $.toString((formatUrl) => { - if (typeof (request) == 'undefined' || !request) { - eval(fba.getInternalJs()); - }; - if (window.c == null) { - window.c = 0; - }; - window.c++; - if (window.c * 250 >= 15 * 1000) { - fba.hideLoading(); - return "toast://解析超时,建议切换线路或更换解析方式"; - } - //fba.log(fy_bridge_app.getUrls()); - var urls = _getUrls(); - var exclude = /m3u8\.tv/; - 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])) { - //fba.log(urls[i]); - if(fy_bridge_app.getHeaderUrl) - //return fy_bridge_app.getHeaderUrl(urls[i]).replace(";{", "#isVideo=true#;{"); - return $$$("#noLoading#").lazyRule((url) => { - return cacheM3u8(url.split(";{")[0])+"#isVideo=true#;{"+url.split(";{")[1]; - }, fy_bridge_app.getHeaderUrl(urls[i])); - else { - return $$$("#noLoading#").lazyRule((url, formatUrl) => { - //url = url.replace(/http.*?\?url=/, ''); - return formatUrl(url); - }, urls[i], formatUrl); - } - } - } - }, this.formatUrl) - }, - 智能: function (vipUrl, input) { - showLoading('√智能解析中,请稍候'); - var video = ""; - try { - if (vipUrl.search(/LT-/) > -1) { - var jxList = ["https://ltjx.jeeves.vip/home/api?type=ys&uid=461939&key=degkpqruyzACEJLORW&url=", "https://ltjx.jeeves.vip/home/api?type=ys&uid=1589472&key=aehjpzAHILOPQRU456&url=", "https://vip.legendwhb.cn/m3u8.php?url=", "https://jx.zjmiao.com/?url=", "https://09tv.top/jx/?url="]; - var keyList = ["", "", "D63D64E0EDA774E3", "63f49d21a0dccf3c", "A42EAC0C2B408472"]; - var refList = ["", "", "https://wnvod.net", "", "https://09tv.top"]; - var jxLX = ["O", "O", "M", "M", "M"]; - for (var i = 0; i < jxList.length; i++) { - if (jxLX[i] != "M") { - video = this.明码(jxList[i] + vipUrl); - if (video.slice(0, 4) == 'http') { - break; - } else { - log('线路LT:' + jxList[i] + ' 解析异常'); - } - } else { - video = this.maoss(jxList[i] + vipUrl, refList[i], keyList[i]); - if (video.slice(0, 4) == 'http') { - break; - } else { - log('线路LT:' + jxList[i] + ' 解析异常'); - } - } - } - } else if (/renrenmi-/.test(vipUrl)) { - var jxList = ["https://jx.blbo.cc:4433/analysis.php?v=", "https://jx.renrenmi.cc/?url=", "https://a.dxzj88.com/jxrrm/jiami.php?url="]; - for (var i = 0; i < jxList.length; i++) { - video = this.明码(jxList[i] + vipUrl); - if (video.slice(0, 4) == 'http') { - break; - } else { - log('线路RR:' + jxList[i] + ' 解析异常'); - } - } - } else if (/RongXingVR/.test(vipUrl)) { - var jxList = ["https://vip.rongxingvr.top/api/?key=CMTJsEtHIzsLqZ6OGl&url=", "https://tc.yuanmajs.cn/jxplayer.php?v="]; - for (var i = 0; i < jxList.length; i++) { - video = this.明码(jxList[i] + vipUrl); - if (video.slice(0, 4) == 'http') { - break; - } else { - log('线路RX:' + jxList[i] + ' 解析异常'); - } - } - } else if (/wuduyun-/.test(vipUrl)) { - var jxList = ["http://jf.1080p.icu:3232/home/api?type=dsp&uid=147565&key=adilmopuBEFJNUV067&url="]; - for (var i = 0; i < jxList.length; i++) { - video = this.明码(jxList[i] + vipUrl); - if (video.slice(0, 4) == 'http') { - break; - } else { - log('线路WD:' + jxList[i] + ' 解析异常'); - } - } - } else if (/xueren-/.test(vipUrl)) { - var jxList = ["https://www.shangjihuoke.com/json.php/?url="]; - for (var i = 0; i < jxList.length; i++) { - video = this.明码(jxList[i] + vipUrl); - if (video.slice(0, 4) == 'http') { - break; - } else { - log('线路XR:' + jxList[i] + ' 解析异常'); - } - } - } else if (/\.suoyo|adHuRo0dcuHoM163L1/.test(vipUrl)) { - var apiList = ["https://p.tjomet.com/duoduo/api.php", "https://jiexi.ysgc.xyz/api.php"]; - var refList = ["https://www.ysgc.cc/", "https://www.ysgc.cc/"]; - if (/suoyo/.test(vipUrl)) { - //明码https://a.dxzj88.com/jxdd/dd.php?url= - vipUrl = 'adHuRo0dcuHoM163L1y49tM3U4LmNhY2hlLnN1b3lvLmNj' + base64Encode(vipUrl.replace('https://m3u8.cache.suoyo.cc', '')); - } - for (var i = 0; i < apiList.length; i++) { - video = this.DD(vipUrl, apiList[i], refList[i]); - if (video.slice(0, 4) == 'http') { - break; - } else { - log('线路DD:' + apiList[i] + ' 解析异常'); - } - } - } else if (/ruifenglb/.test(vipUrl)) { - var jxList = ["http://player.yjhan.com:8090/api/?key=sQWHLErduwNEmxfx3V&url=", "https://004.summ.vip/?url=", "https://shangjihuoke.com/CL4K/?url="]; - var keyList = ["", "A42EAC0C2B408472", "A42EAC0C2B408472"]; - var refList = ["", "", ""]; - var jxLX = ["O", "M", "M"]; - for (var i = 0; i < jxList.length; i++) { - if (jxLX[i] != "M") { - video = this.明码(jxList[i] + vipUrl); - if (video.slice(0, 4) == 'http') { - break; - } else { - log('线路RX:' + jxList[i] + ' 解析异常'); - } - } else { - video = this.maoss(jxList[i] + vipUrl, refList[i], keyList[i]); - if (video.slice(0, 4) == 'http') { - break; - } else { - log('线路CL4K:' + jxList[i] + ' 解析异常'); - } - } - } - } else if (/xfy-/.test(vipUrl)) { - video = this.maoss("https://jx.zjmiao.com/?url=" + vipUrl, "", "63f49d21a0dccf3c"); - } else if (/\.mp4|\.m3u8/.test(vipUrl)) { - video = vipUrl; - } else if (/youku|mgtv|ixigua|qq\.com|iqiyi|migu|bilibili|sohu|pptv|\.le\.|\.1905|cctv/.test(vipUrl)) { - if (getMyVar('SrcGJFS', '1') == "2") { - return this.DN(vipUrl); - } else { - return this.嗅探(input); - } - } - } catch (e) { } - if (video == "") { - return this.嗅探(input); - } else { - return this.formatUrl(video); - } - }, - 官网: function (vipUrl, jxUrl, isDn) { - try { - if (getMyVar('SrcGJFS', '1') == "2" || isDn == "1") { - return this.DN(vipUrl); - } else { - if (getMyVar('author') == "帅√`人才") { - return this.聚嗅(vipUrl); - } else { - if (jxUrl == "" || jxUrl == undefined) { jxUrl = "https://jx.blbo.cc:4433/?url=" } - return this.嗅探(jxUrl + vipUrl); - } - } - } catch (e) { - return ''; - } - }, - 明码: function (playUrl, ref) { - try { - if (ref == "") { - var html = request(playUrl, { timeout: 5000 }); - } else { - var html = request(playUrl, { headers: { 'Referer': ref }, timeout: 5000 }); - } - try { - let rurl = JSON.parse(html).url || JSON.parse(html).data; - if (typeof (rurl) != "undefined") { - var url = rurl; - } - } catch (e) { - var url = html.match(/urls = "(.*?)"/)[1]; - } - return url; - } catch (e) { - return ''; - } - }, - maoss: function (playUrl, ref, key) { - try { - if (ref) { - var html = request(playUrl, { headers: { 'Referer': ref }, timeout: 8000 }); - } else { - var html = request(playUrl, { timeout: 8000 }); - } - if (html.indexOf('&btwaf=') != -1) { - html = request(playUrl + '&btwaf' + html.match(/&btwaf(.*?)"/)[1], { headers: { 'Referer': ref }, timeout: 8000 }) - } - var iv = html.match(/_token = "(.*?)"/)[1]; - - var getVideoInfo = function (text) { - eval(getCryptoJS()); - var video = CryptoJS.AES.decrypt(text, CryptoJS.enc.Utf8.parse(key), { - 'iv': CryptoJS.enc.Utf8.parse(iv), - 'mode': CryptoJS.mode.CBC - }).toString(CryptoJS.enc.Utf8); - return video; - }; - eval(html.match(/var config = {[\s\S]*?}/)[0]); - if (config.url.slice(0, 4) != 'http') { - config.url = getVideoInfo(config.url); - } - if (config.url != "" && config.url.slice(0, 4) != 'http') { - config.url = decodeURIComponent(config.url); - } - return config.url; - } catch (e) { - return ''; - } - }, - DD: function (vipUrl, apiUrl, ref) { - try { - if (apiUrl == "" || apiUrl == undefined) { - /* - if(getMyVar('ddfrom', '')=="duoduozy"){ - apiUrl = "https://player.tjomet.com/ysgc/qa9ty92aTSGHwn3X.jpg" - }else{ - apiUrl = "https://ysgc.tjomet.com/qa9ty92aTSGHwn3X.jpg" - } - clearMyVar('ddfrom'); - */ - apiUrl = "https://ysgc.tjomet.com/qa9ty92aTSGHwn3X.jpg" ; - } - var html = request("https://ysgc.tjomet.com/?url="+vipUrl,{timeout:5000}); - eval(html.match(/var config = {[\s\S]*?}/)[0] + ''); - var bod = 'url=' + config.url + "&vkey=" + config.vkey + "&token=" + config.token + "&sign=bKvCXSsVjPyTNr9R"; - var json = JSON.parse(request(apiUrl, { method: 'POST', body: bod })); - eval(fetch("https://vkceyugu.cdn.bspapp.com/VKCEYUGU-03ee1f89-f0d4-49aa-a2b3-50e203514d8a/2e54cc42-9b4c-457d-b2de-0cdf3e2aeeaa.js"));//https://p.tjomet.com/duoduo/js/decode.js - let url = getVideoInfo(json.url); - if(/^http/.test(url)){ - return url; - }else{ - var jsonstr = JSON.parse(request("https://p.tjomet.com/lff/api.php", { headers: { 'Referer': ref }, method: 'POST', body: 'url=' + vipUrl })); - eval(getCryptoJS()); - return CryptoJS.AES.decrypt(jsonstr.url, CryptoJS.enc.Utf8.parse(CryptoJS.MD5('rXjWvXl6')), { - 'iv': CryptoJS.enc.Utf8.parse('NXbHoWJbpsEOin8b'), - 'mode': CryptoJS.mode.CBC, - 'padding': CryptoJS.pad.ZeroPadding - }).toString(CryptoJS.enc.Utf8); - } - } catch (e) { - return ''; - } - }, - DD2: function (vipUrl, apiUrl, ref) { - try { - if(/youku|mgtv|ixigua|qq\.com|iqiyi|migu|bilibili|sohu|pptv|\.le\.|\.1905|cctv/.test(url)) { - return SrcParseS.官网(url); - } else { - if (apiUrl == "" || apiUrl == undefined) { apiUrl = "https://bo.dd520.cc/xmplayer/duoduo.php" } - if (ref == "" || ref == undefined) { ref = "http://www.xawqxh.net" } - vipUrl = "ahHgRj0kceHdMc66L5y4" + base64Encode(vipUrl).slice(10); - //var json = JSON.parse(request(apiUrl, { headers: { 'Referer': ref }, method: 'POST', body: 'url=' + vipUrl })); - var json = JSON.parse(request(apiUrl, { method: 'POST', body: 'url=' + vipUrl })); - eval(getCryptoJS()); - return CryptoJS.AES.decrypt(json.url, CryptoJS.enc.Utf8.parse(CryptoJS.MD5('rXjWvXl6')), { - 'iv': CryptoJS.enc.Utf8.parse('NXbHoWJbpsEOin8b'), - 'mode': CryptoJS.mode.CBC, - 'padding': CryptoJS.pad.ZeroPadding - }).toString(CryptoJS.enc.Utf8); - } - } catch (e) { - return ''; - } - }, - DN: function (vipUrl) { - evalPrivateJS("OjB3OHrVodkVQlHIU8UUAC5W0ZBgTQEC4h9eUEcAT9kEM0hY/45YOxs7PDeQEnxjVhaWW2tIqO5GQimD4ssHKSka505+O0avEtQQZ9zRy6GxaBZdTHrbCPcoNIajmr3+JG22tRswOJFYDX5aYk0PfUDEFsZa2OjZbz+xTthnoUPLNm0R2g1kBFnWwGKBWUxEhEsFwFruhFSaxJi1E1WZ7WlbP0v4OpoQgn6M7UXGahP9h2fHi8UBVDGfjzIuVuJSCgICLlVGaAbT0ghic+Kfbp3TmjRhAo1DKretYp1U53apDMvO2Q+6oAyO1js5TJwx51ygFSUqVGAu0C2DLxkG0Z3+L8UPZyJa4KVDlqq/goE=") - return aytmParse(vipUrl); - }, - 聚嗅: function (vipUrl, x5jxlist) { - var jxhtml = config.依赖.match(/https.*\//)[0] + 'SrcJiexi.html'; - fc(jxhtml, 48); - let libsjxjs = fetch("hiker://files/libs/" + md5(jxhtml) + ".js"); - if (x5jxlist != undefined) { - if (x5jxlist.length > 0) { - libsjxjs = libsjxjs.replace(libsjxjs.match(/apiArray=(.*?);/)[1], JSON.stringify(x5jxlist)) - } - } - let libsjxhtml = "hiker://files/libs/" + md5(jxhtml) + ".html"; - writeFile(libsjxhtml, libsjxjs); - return this.嗅探(getPath(libsjxhtml) + '?url=' + vipUrl); - }, - mulheader: function (url) { - if (/mgtv/.test(url)) { - var header = { 'User-Agent': 'Mozilla/5.0', 'Referer': 'www.mgtv.com' }; - } else if (/bilibili|bilivideo/.test(url)) { - var header = { 'User-Agent': 'Mozilla/5.0', 'Referer': 'www.bilibili.com' }; - } else if (/wkfile/.test(url)) { - var header = { 'User-Agent': 'Mozilla/5.0', 'Referer': 'fantuan.tv' }; - } else { - var header = { 'User-Agent': 'Mozilla/5.0' }; - } - return header; - }, - APP: function (vipUrl) { - var appParses = getMyVar('parse_api', ''); - var Uparselist = []; - Uparselist = appParses.split(','); - 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; - } - Uparselist = uniq(Uparselist);//去重 - var x5jxlist = []; //x5嗅探接口存放数组 - var url = ""; - var parseurl = ""; - var urls = [];//多线路地址 - var headers = [];//多线路头信息 - var exclude = /404\.m3u8|xiajia\.mp4|余额不足\.m3u8|\.suoyo|\.ruifenglb|m3u8\.tv/;//设置排除地址 - var contain = /\.mp4|\.m3u8|\.flv|\.avi|\.mpeg|\.wmv|\.mov|\.rmvb|\.dat|qqBFdownload|mime=video%2F|video_mp4/;//设置符合条件的正确地址 - if (!exclude.test(vipUrl) && contain.test(vipUrl)) { - url = vipUrl; - } - for (var i = 0; i < Uparselist.length; i++) { - if (contain.test(url)) { break; } - if (x5jxlist.length >= 3) { break; } - let UrlList = []; - let p = i + 3; - if (p > Uparselist.length) { p = Uparselist.length } - for (let s = i; s < p; s++) { - parseurl = Uparselist[s]; - if (parseurl[0] == '/') { parseurl = 'https:' + parseurl } - if (parseurl.substring(0, 4) == 'http') { - UrlList.push(parseurl); - } - i = s; - } - if (UrlList.length > 0) { - let playUrls = UrlList.map((playUrl) => { - return { - url: playUrl + vipUrl, - options: { headers: { 'User-Agent': PC_UA }, timeout: 2000 } - } - }); - - let bfhtml = batchFetch(playUrls); - for (let k in bfhtml) { - let gethtml = bfhtml[k]; - parseurl = UrlList[k]; - if (gethtml == undefined || gethtml == "" || !/<|{/.test(gethtml)) { - //url直链网页打不开 - } else { - try { - try { - var rurl = JSON.parse(gethtml).url || JSON.parse(gethtml).data; - } catch (e) { - try { - var rurl = gethtml.match(/urls = "(.*?)"/)[1]; - } catch (e) { - x5jxlist.push(parseurl); - } - } - if (typeof (rurl) != "undefined" && contain.test(rurl) && !exclude.test(rurl)) { - url = rurl; - urls.push(this.formatUrl(url, urls.length)); - headers.push(this.mulheader(url)); - } - } catch (e) { } - } - }//批量结果循环 - } - } - - if (url == "") { - if (/youku|mgtv|ixigua|qq\.com|iqiyi|migu|bilibili|sohu|pptv|\.le\.|\.1905|cctv/.test(vipUrl)) { - if (getMyVar('SrcGJFS', '1') == "2") { - return this.DN(vipUrl); - } else { - if (getMyVar('author') == "帅√`人才") { - return this.聚嗅(vipUrl); - } else { - return this.聚嗅(vipUrl, x5jxlist); - } - } - } else { - if (getMyVar('author') == "帅√`人才") { - return this.智能(vipUrl); - } else { - return this.聚嗅(vipUrl, x5jxlist); - } - } - } else { - if (urls.length > 1) { - return JSON.stringify({ - urls: urls, - headers: headers - }); - } else { - return this.formatUrl(url); - } - } - } -} - -function SRCSet(setupPages) { - addListener("onClose", $.toString(() => { - //clearMyVar('官网'); - refreshPage(false); - })); - setPageTitle("♥设置"); - - function getTitle(title, Color) { - return '' + title + ''; - } - var d = []; - //if(getMyVar('islazy', '0') =="1"){ - d.push({ - title: '↓按需求修改此小程序的相关设置↓', - col_type: "rich_text" - }); - d.push({ - col_type: "line_blank" - }); - - //全局解析设置:1为自行编写动态解析,2为帅模板的通用嗅探解析 - var QJJX = getMyVar('SrcQJJX', '1'); - putMyVar('SrcQJJX', QJJX); - var islazy = getMyVar('islazy', '0'); - d.push({ - title: islazy == "1" && QJJX == '1' ? `‘‘’’全局解析方式:‘‘’’小程序的解析规则` : `‘‘’’全局解析方式:‘‘’’帅模板的嗅探逻辑`, - url: islazy == "0" ? 'toast://规则没有lazy解析,使用模板解析' : $('#noLoading#').lazyRule((QJJX) => { - if (QJJX == '1') { - setItem('SrcQJJX', '2'); - putMyVar('SrcQJJX', '2'); - var sm = "帅模板的嗅探规则"; - } else { - setItem('SrcQJJX', '1'); - putMyVar('SrcQJJX', '1'); - var sm = "小程序的解析规则"; - } - refreshPage(false); - return 'toast://全局解析方式:' + sm; - }, QJJX), - col_type: "text_1" - }); - for (let i = 0; i < 10; i++) { - d.push({ - col_type: "blank_block" - }) - } - d.push({ - col_type: "line_blank" - }); - //设置针对官网资源的默认解析方式:1为规则自定义解析,2为断插解析,3为嗅探解析 - - var GJFSsm = getTitle('官方资源解析方式:', '#098AC1'); - var GJFS = islazy == '1' ? getMyVar('SrcGJFS', '1') : getMyVar('SrcGJFS', '3'); - putMyVar('SrcGJFS', GJFS); - d.push({ - title: islazy == '1' && GJFS == '1' ? GJFSsm + getTitle('规则的动态解析', '#f13b66a') : GJFS == '2' ? GJFSsm + getTitle('调用断插解析', '#f13b66a') : GJFSsm + getTitle('模板嗅探解析', '#f13b66a'), - col_type: "rich_text" - }); - d.push({ - col_type: 'line' - }); - if (islazy == '1' && QJJX == '1') { - d.push({ - title: GJFS == '1' ? getTitle('规则', '#f13b66a') : '规则', - url: `#noLoading#@lazyRule=.js:setItem('SrcGJFS','1');putMyVar('SrcGJFS','1');refreshPage(false);'toast://官方资源解析方式:规则lazy自定义';`, - img: "https://lanmeiguojiang.com/tubiao/ke/23.png", - col_type: "icon_small_3" - }); - } - if (getMyVar('官网', '0') == "1" || getMyVar('是否APP','0') == "1") { - d.push({ - title: GJFS == '2' ? getTitle('断插', '#f13b66a') : '断插', - url: `#noLoading#@lazyRule=.js:setItem('SrcGJFS','2');putMyVar('SrcGJFS','2');refreshPage(false);'toast://官方资源解析方式:调用断插解析';`, - img: "https://lanmeiguojiang.com/tubiao/ke/24.png", - col_type: "icon_small_3" - }); - d.push({ - title: GJFS == '3' ? getTitle('嗅探', '#f13b66a') : '嗅探', - url: `#noLoading#@lazyRule=.js:setItem('SrcGJFS','3');putMyVar('SrcGJFS','3');refreshPage(false);'toast://官方资源解析方式:模板嗅探解析';`, - img: "https://lanmeiguojiang.com/tubiao/ke/25.png", - col_type: "icon_small_3" - }); - } - for (let i = 0; i < 10; i++) { - d.push({ - col_type: "blank_block" - }) - } - d.push({ - col_type: "line_blank" - }); - if (GJFS == '2') { - for (let i = 0; i < 10; i++) { - d.push({ - col_type: "blank_block" - }) - } - d.push({ - title: '断插接口设置', - url: fileExist('hiker://files/cache/fileLinksᴰⁿ.txt') ? setupPages("设置") : "hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#", - img: "https://lanmeiguojiang.com/tubiao/messy/30.svg", - col_type: "icon_2" - }); - d.push({ - title: '解析接口管理', - url: fileExist('hiker://files/cache/fileLinksᴰⁿ.txt') ? setupPages("编辑") : "hiker://page/Route?rule=MyFieldᴰⁿ&type=编辑#noRecordHistory#", - img: "https://lanmeiguojiang.com/tubiao/messy/17.svg", - col_type: "icon_2" - }); - for (let i = 0; i < 10; i++) { - d.push({ - col_type: "blank_block" - }) - } - d.push({ - col_type: "line_blank" - }); - } - - if (GJFS == '3' || QJJX == '2') { - var XTNH = getMyVar('SrcXTNH', 'web'); - putMyVar('SrcXTNH', XTNH); - d.push({ - title: XTNH == 'web' ? getTitle('通用嗅探内核:', '#098AC1') + getTitle('webview内核', '#f13b66a') : getTitle('通用嗅探内核:', '#098AC1') + getTitle('腾讯x5内核', '#f13b66a'), - col_type: "rich_text" - }); - d.push({ - col_type: 'line' - }); - d.push({ - title: '使用x5内核', - url: `#noLoading#@lazyRule=.js:setItem('SrcXTNH','x5');putMyVar('SrcXTNH','x5');refreshPage(false);'toast://通用嗅探内核:腾讯x5内核';`, - img: "https://lanmeiguojiang.com/tubiao/ke/127.png", - col_type: "icon_2" - }); - d.push({ - title: '使用web内核', - url: `#noLoading#@lazyRule=.js:setItem('SrcXTNH','web');putMyVar('SrcXTNH','web');refreshPage(false);'toast://通用嗅探内核:webview内核';`, - img: "https://lanmeiguojiang.com/tubiao/more/251.png", - col_type: "icon_2" - }); - for (let i = 0; i < 10; i++) { - d.push({ - col_type: "blank_block" - }) - } - d.push({ - col_type: "line_blank" - }); - } - var M3U8 = getMyVar('SrcM3U8', '1'); - putMyVar('SrcM3U8', M3U8); - d.push({ - title: M3U8 == '1' ? `‘‘’’m3u8播放连接方式:‘‘’’通过缓存m3u8文件` : `‘‘’’m3u8播放连接方式:‘‘’’直接在线访问`, - url: $('#noLoading#').lazyRule((M3U8) => { - if (M3U8 == '1') { - setItem('SrcM3U8', '2'); - putMyVar('SrcM3U8', '2'); - var sm = "直接在线访问,有可能会失效,但兼容通用性好"; - } else { - setItem('SrcM3U8', '1'); - putMyVar('SrcM3U8', '1'); - var sm = "通过缓存m3u8文件,避免可能失效,但某些场景不支持"; - } - refreshPage(false); - return 'toast://m3u8播放连接方式:' + sm; - }, M3U8), - col_type: "text_1" - }); - for (let i = 0; i < 10; i++) { - d.push({ - col_type: "blank_block" - }) - } - d.push({ - col_type: "line_blank" - }); - //} - d.push({ - title: '恢复设置', - url: `#noLoading#@lazyRule=.js:clearItem('SrcQJJX');clearMyVar('SrcQJJX');clearItem('SrcGJFS');clearMyVar('SrcGJFS');clearItem('SrcXTNH');clearMyVar('SrcXTNH');clearItem('SrcM3U8');clearMyVar('SrcM3U8');refreshPage(false);'toast://已恢复小程序默认设置';`, - img: "https://lanmeiguojiang.com/tubiao/ke/56.png", - col_type: "icon_4" - }); - d.push({ - title: '清除缓存', - url: `#noLoading#@lazyRule=.js:deleteCache();back(true);'toast://已清除小程序所有依赖缓存';`, - img: "https://lanmeiguojiang.com/tubiao/more/334.png", - col_type: "icon_4" - }); - setResult(d); -} -//验证 -var verify = { - A: function (yurl, headers, waittime, isss) {//手动过验证 - //log(yurl);log(headers);log(ua);log(timeout); - var d = []; - headers = JSON.parse(headers)||{}; - d.push({ - desc: '100%&&float', - url: yurl, - extra: { - ua: headers, - js: $.toString((time,isss) => { - var cook = document.cookie; - var html = document.documentElement.outerHTML; - if (!/系统安全验证/.test(html)){ - fba.showLoading('验证中,请稍候'); - fba.putVar("SrcCookie", cook); - if(isss==1){ - setTimeout("fba.back()",200); - }else{ - fba.setTimeout(fba.parseLazyRule(`hiker://empty@lazyRule=.js:refreshX5WebView('');refreshPage(true);hideLoading();`), time); - } - } - },waittime,isss), - jsLoadingInject: true - }, - col_type: 'x5_webview_single' - }); - setResult(d); - }, - B: function (verifyimg,verifyapi,headers) {//自动过字母数字验证 - //log(verifyimg);log(verifyapi);log(headers); - headers = JSON.parse(headers)||{}; - const File = java.io.File; - let javaImport = new JavaImporter(); - javaImport.importPackage( - Packages.com.example.hikerview.utils - ); - var bsimg = ""; - with(javaImport) { - let png = "hiker://files/cache/SrcVerify.png"; - downloadFile(verifyimg, png, headers); - let path = getPath(png).replace("file://", ""); - bsimg = _base64.encodeToString(FileUtil.fileToBytes(path), _base64.NO_WRAP); - new File(path).delete(); - } - evalPrivateJS("aHTJW8GUqk24nqdf1KutpXLSQxxUqCopcaSjWa/1BqbspogsD9sqzzRKQ0/eY1cbHWXKqK/7SmE36413GhDw1/LB4qZbC87N46M3cbGebQKVsuA+wqokqyn1sWZEySrRyJHtbzpZgnEP0XYECOKzPs0qEDbm2B+3gV+JGJA37bwIqwzm/veCOIIpZgmIiRR++Nd7tnLMDBM+/vxyS+MXfE2IYkez6NE1hioj8TQ9X7UxWHZGX1PS2hc8lotTz+2qqC3Kwy5Jx6cr8zh4grgoykYsrWLjm4wLbAoSHl3Oe6QNNx+Tloen/mKR5K8c2B7xsnPja73djQkKloPGX+pCQHx8DJHZqptu2ObISfk3jBqUk2o06nxPvcT1geVKM4Sz") - - let vcode = ocr(bsimg,config.依赖); - //log(vcode); - let result = fetch(verifyapi + vcode, { - headers: headers, - method: 'POST' - }); - try { - return JSON.parse(result).msg; - } catch (e) { - return ""; - } - } -} -//版本检测 -function Version() { - var nowVersion = 5.5;//现在版本 - if (getVar('srcDyTmpl-VersionCheck', '0') == '0') { - try { - eval(fetch(config.依赖.match(/https.*\//)[0] + 'SrcTmplVersion.js')) - if (newVersion.srcDyTmpl > nowVersion) { - deleteCache(); - require(config.依赖); - log('检测到新依赖文件,已更新!'); - } - } catch (e) { } - putVar('srcDyTmpl-VersionCheck', '1'); - } +//一级 +function yiji() { + Version(); + addListener("onClose", $.toString(() => { + clearMyVar('isverifyA'); + })); + + var d = []; + var author = MY_RULE.author; + var SrcQJJX = getItem('SrcQJJX', '1'); + var SrcGJFS = getItem('SrcGJFS', '3'); + var SrcXTNH = getItem('SrcXTNH', 'web'); + var SrcM3U8 = getItem('SrcM3U8', '1'); + try { + var isAPP = 是否APP; + } catch (e) { + var isAPP = 0; + } + + if (isAPP != 1) { + var list = parseDomForArray(getResCode(), 列表); + if (config.debug == "1") { log(list) } + for (var i in list) { + try { + d.push({ + title: parseDomForHtml(list[i], 标题), + desc: parseDomForHtml(list[i], 描述), + pic_url: 图片.indexOf('@') == -1 ? parseDom(list[i], 图片) + "@Referer=" : 图片.split('@')[1] == "-" ? parseDom(list[i], 图片.split('@')[0]) : parseDom(list[i], 图片.split('@')[0]) + "@" + 图片.split('@')[1], + url: "hiker://empty##" + parseDom(list[i], 链接) + "#immersiveTheme#", + extra: { + pic: parseDom(list[i], 图片.split('@')[0]), + author: author, + SrcQJJX: SrcQJJX, + SrcGJFS: SrcGJFS, + SrcXTNH: SrcXTNH, + SrcM3U8: SrcM3U8 + } + }); + } catch (e) { } + } + } else { + //APP + try { + var url_api = 接口API; + } catch (e) { + var url_api = MY_RULE.sort_url; + } + var urls = MY_URL.split('##'); + if (url_api == "" || !/^http/.test(url_api)) { + url_api = urls[1]; + } + + if (url_api.indexOf('v1.vod') > -1) { + var url = url_api + '/detail?vod_id='; + MY_URL = url_api + urls[2].replace('video?tid=', '?type=');// + '?type=fyclass&pg=fypage&page=fypage&limit=20&area=fyarea&lass=&year=fyyear';//v1 + } else { + var url = url_api + 'video_detail?id='; + MY_URL = url_api + urls[2];// + 'video?tid=fyclass&pg=fypage&page=fypage&limit=20&area=fyarea&lass=&year=fyyear';//app + } + + try { + var MYUA = 指定UA; + } catch (e) { + var MYUA = 'Dalvik/2.1.0';//Dart/2.13(dart:io) + } + try { + var html = JSON.parse(request(MY_URL, { headers: { 'User-Agent': MYUA } })); + } catch (e) { + d.push({ + title: 'APP接口访问出错,可通过编辑小程序,修改接口API地址
目前支持V1和app类型
比如:http://xxxxxxx/api.php/v1.vod', + col_type: 'rich_text' + }); + var html = { data: { list: [] } }; + } + try { + var list = html.data.list; + } catch (e) { + try { + var list = html.list; + } catch (e) { + var list = html.data; + } + } + if (config.debug == "1") { log(list) } + try { + for (var i in list) { + d.push({ + title: list[i].vod_name, + desc: list[i].vod_remarks, + pic_url: list[i].vod_pic + "@Referer=", + url: 'hiker://empty##' + url + list[i].vod_id + "#immersiveTheme#", + col_type: 'movie_3', + extra: { + pic: list[i].vod_pic, + author: author, + SrcQJJX: SrcQJJX, + SrcGJFS: SrcGJFS, + SrcXTNH: SrcXTNH, + SrcM3U8: SrcM3U8 + } + }); + } + } catch (e) { } + } + putMyVar('author', author); + setResult(d); +} +//二级 +function erji() { + var d = []; + //加载本地自定义变量缓存文件 + var configfile = config.依赖.match(/http(s)?:\/\/.*\//)[0] + 'srcconfig.js'; + require(configfile); + addListener("onClose", $.toString(() => { + clearMyVar('是否APP'); + })); + try { + var isAPP = 是否APP; + } catch (e) { + var isAPP = 0; + } + + //自动判断是否需要更新请求 + if (getMyVar('myurl', '0') != MY_URL || !configvar.详情1 || configvar.标识 != MY_URL) { + if (MY_URL.indexOf('hiker://empty##') > -1) { + if (isAPP == 0) { + try { + var MYUA = 指定UA; + } catch (e) { + var MYUA = MY_RULE.ua=="pc"?PC_UA:MOBILE_UA; + } + var html = request(MY_URL.split('##')[1], { + headers: { + 'User-Agent': MYUA + } + }); + } else { + try { + var MYUA = 指定UA; + } catch (e) { + var MYUA = 'Dalvik/2.1.0'; + } + var html = JSON.parse(request(MY_URL.split('##')[1], { headers: { 'User-Agent': MYUA } })); + } + } else { + if (isAPP == 0) { + var html = getResCode(); + } else { + var html = JSON.parse(getResCode()); + } + } + var zt = 1; + putMyVar('myurl', MY_URL); + } else { + var zt = 0; + } + + //影片详情 + if (zt == 1) { + var details1 = ""; + var details0 = ""; + var details2 = ""; + var pic = ""; + var filter = ""; + + if (isAPP == 0) { + try { + if (项目值 == '') { var itemValue = 1 } else { var itemValue = 项目值 } + } catch (e) { var itemValue = 1 } + try { + if (项目1 != "") { + if (itemValue == 1) { + if(项目2 != ""){ + details1 = parseDomForHtml(html, 项目1).substr(0, 15) + '\n' + }else{ + details1 = parseDomForHtml(html, 项目1) + } + } else { + details1 = 项目1 + '\n'; + } + } + } catch (e) { details1 = '项目1,获取失败\n' } + try { + if (项目2 != "") { + if (itemValue == 1) { + details1 += parseDomForHtml(html, 项目2).substr(0, 15) + '\n' + } else { + details1 += 项目2 + '\n'; + } + } + } catch (e) { details1 += '项目2,获取失败\n' } + try { + if (项目3 != "") { + if (itemValue == 1) { + details0 += parseDomForHtml(html, 项目3) + ' ' + } else { + details0 += 项目3 + ' ' + } + } + } catch (e) { details1 += '项目3,获取失败'; if (项目4 == "") { details1 += '\n' } } + try { + if (项目4 != "") { + if (itemValue == 1) { + if (details0 != "" && details0.length <= 10) { details0 += parseDomForHtml(html, 项目4) } else if (项目5 == "") { details2 += parseDomForHtml(html, 项目4).substr(0, 15) + '\n' } + } else { + if (details0 != "" && details0.length <= 10) { details0 += 项目4 } else if (项目5 == "") { details2 += 项目4 + '\n' } + } + } + } catch (e) { details1 += '项目4,获取失败\n' } + try { + if (项目5 != "") { + if (itemValue == 1) { + details2 += parseDomForHtml(html, 项目5) + '\n' + } else { + details2 += 项目5 + '\n' + } + } + } catch (e) { details2 += '项目5,获取失败\n' } + try { + if (项目6 != "") { + if (itemValue == 1) { + details2 += parseDomForHtml(html, 项目6) + } else { + details2 += 项目6 + } + } + } catch (e) { details2 += '项目6,获取失败' } + try { + if (图片 != "") { + if (itemValue == 1) { + pic = parseDom(html, 图片) + } else { + pic = 图片 + } + } else { + pic = MY_PARAMS.pic + } + } catch (e) { pic = MY_PARAMS.pic } + try { + if (过虑 != "") { + filter = "/" + 过虑 + "/g"; + } + } catch (e) { + filter = ""; + } + if (details0 != "") { details1 += details0.substr(0, 15) }; + details1 = details1.replace(eval(filter), ''); + details2 = details2.replace(eval(filter), ''); + if (config.debug == "1") { + log(details1); + log(details2); + } + } else { + //app + let actor = html.data.vod_actor || "空白"; + let director = html.data.vod_director || "空白"; + let area = html.data.vod_area || "空白"; + let year = html.data.vod_year || "空白"; + let remarks = html.data.vod_remarks || ""; + let pubdate = html.data.vod_pubdate || html.data.vod_class || ""; + details1 = '主演:' + actor.substring(0, 12) + '\n导演:' + director.substring(0, 12) + '\n地区:' + area + ' 年代:' + year; + details2 = remarks + '\n' + pubdate; + pic = html.data.vod_pic || MY_PARAMS.pic; + } + + } else { + var details1 = configvar.详情1; + var details2 = configvar.详情2; + var pic = configvar.图片; + try { + if (过虑 != "") { + filter = "/" + 过虑 + "/g"; + } + } catch (e) { + filter = ""; + } + } + d.push({ + title: details1,//详情1 + desc: details2,//详情2 + pic_url: pic + '@Referer=',//图片 + url: pic + '#noHistory#',//链接 + col_type: 'movie_1_vertical_pic_blur', + extra: { + gradient: true + } + }); + //简介详情 + if (zt == 1) { + try { + if (isAPP == 0) { + if (itemValue == 1) { + var desc = parseDomForHtml(html, 简介).replace(eval(filter), '') || ""; + } else { + var desc = 简介; + } + } else { + var desc = html.data.vod_blurb; + } + if (desc == '' || desc == undefined) { desc = '...' } + } catch (e) { + var desc = '...'; + } + } else { + var desc = configvar.简介 + } + d.push({ + title: '‘‘’’简介:' + desc.substr(0, 65) + '......查看详情', + url: $('hiker://empty#noHistory#').rule(param => { + setHomeResult([{ + title: '影片简介:\n' + param, + col_type: 'long_text' + }]); + }, desc), + col_type: 'text_1' + }); + + //线路数组定位 + if (zt == 1) { + if (isAPP == 0) { + var arts = parseDomForArray(html, 线路列表); + } else { + //var arts = eval(线路列表); + var arts = html.data.vod_url_with_player || html.data.vod_play_list; + + } + } else { + var arts = configvar.线路; + } + + var tabs = []; + for (var i in arts) { + if (isAPP == 0) { + tabs.push(parseDomForHtml(arts[i], 单个线路).replace(//g, '').replace(/ /g, '').replace(/ /g, '').replace(eval(filter), '')) + } else { + let line = arts[i].name || arts[i].player_info.show; + tabs.push(line); + + if (getMyVar(MY_URL, '0') == i) { + var parse_api = ""; + try { + let parse1 = arts[i].player_info.parse; + let parse2 = arts[i].player_info.parse2; + if (parse2.indexOf('//') == -1) { + parse_api = parse1; + } else if (parse1.indexOf('//') == -1) { + parse_api = parse2; + } else { + parse_api = parse2 + ',' + parse1; + } + } catch (e) { + parse_api = arts[i].parse_api; + } + if (parse_api != "" && parse_api != undefined) { + parse_api = parse_api.replace(/\.\./g, '.').replace(/。\./g, '.'); + } + //log(parse_api); + } + } + } + + //选集数组定位 + if (zt == 1) { + if (isAPP == 0) { + var conts = parseDomForArray(html, 影片列表); + } else { + var conts = arts; + } + var newconfig = { 详情1: details1, 详情2: details2, 图片: pic, 简介: desc, 线路: arts, 影片: conts, 标识: MY_URL }; + var libsfile = 'hiker://files/libs/' + md5(configfile) + '.js'; + writeFile(libsfile, 'var configvar = ' + JSON.stringify(newconfig)); + } else { + var conts = configvar.影片; + } + + var lists = []; + for (var i in conts) { + if (isAPP == 0) { + lists.push(parseDomForArray(conts[i], 单个影片)) + } else { + let single = conts[i].url; + lists.push(single.split('#')); + putMyVar('是否APP','1'); + } + } + + //取之前足迹记录,用于自动定位之前的线路 + try { + eval('var SrcMark = ' + fetch("hiker://files/cache/SrcMark.json")); + if (SrcMark != "") { + if (SrcMark.route[MY_URL] != undefined) { + putMyVar(MY_URL, SrcMark.route[MY_URL]); + } + } + } catch (e) { } + var Marksum = 30;//设置记录线路足迹数量 + + //线路部份 + var Color = "#f13b66a"; + var Color1 = "#098AC1"; + function getHead(title) { + return '‘‘’’' + title + ''; + } + for (let i = 0; i < 9; i++) { + d.push({ + col_type: "blank_block" + }) + } + + //动态解析处理 + try { + if (typeof (lazy) == "undefined") { + putMyVar('islazy', '0');//模板解析 + } else { + putMyVar('islazy', '1'); + if (lazy.indexOf('.官网(') > -1 || lazy.indexOf('.智能(') > -1) { + putMyVar('官网', '1'); + } + } + //初始参数 + let SrcQJJX = getMyVar('islazy') == "0" ? "2" : MY_PARAMS.SrcQJJX; + let SrcGJFS = getMyVar('islazy') == "1" && getMyVar('官网') == "1" ? "1" : MY_PARAMS.SrcGJFS; + let SrcXTNH = MY_PARAMS.SrcXTNH; + let SrcM3U8 = MY_PARAMS.SrcM3U8; + let author = MY_PARAMS.author; + if (SrcQJJX != undefined && getMyVar('SrcQJJX') == "") { putMyVar('SrcQJJX', SrcQJJX) }; + if (SrcGJFS != undefined && getMyVar('SrcGJFS') == "") { putMyVar('SrcGJFS', SrcGJFS) }; + if (SrcXTNH != undefined && getMyVar('SrcXTNH') == "") { putMyVar('SrcXTNH', SrcXTNH) }; + if (SrcM3U8 != undefined && getMyVar('SrcM3U8') == "") { putMyVar('SrcM3U8', SrcM3U8) }; + if (author != undefined && getMyVar('author') == "") { putMyVar('author', author) }; + + if (getMyVar('islazy') == "0" || getMyVar('SrcQJJX', '1') == "2") {//调用模板自带嗅探 + if (isAPP == 0) { + var DTJX = $("").lazyRule(() => { + require(config.依赖.match(/http(s)?:\/\/.*\//)[0] + 'SrcParseS.js'); + return SrcParseS.嗅探(input); + }); + } else { + putMyVar('parse_api', parse_api); + var DTJX = $("").lazyRule(() => { + require(config.依赖); + return SrcParseS.APP(input); + }); + } + } else { + var DTJX = lazy; + } + } catch (e) { } + + evalPrivateJS("AkyT29hQhE2hj4xfBSaOzESMpZFDqEdZ2Xu0kej8K51ytFeKHIxV46v8CHrJJGPAduhW7VMUV64WbjMOom5QpEBJQLQhmp0bJIMGysk+i/4xl6mkiLKsEu3B02ciwUk4acBiZ8Uk9ZTs9Xmfg4gLHsuLhG0mWRN7mLi08sJdFAgPFEGPBxeUOTHTPU7hSbwuZn5OQ3gXavGrZmxBztmFtEzNW1tZDX+gGjSQGWpDLxwv5jQN/ALzFkfVCl0Yw1MmhqjWKvunyflUuEJytDIelchqs9EBesQANq6QQSIbtESG/yD7SENPjo3TGAwE2x2TGf1Nl+qm3A2XmEQbe44L2hepCpN3ToVBVOexrW+BTjQ=") + + function setTabs(tabs, vari) { + d.push({ + title: '‘‘♥’’', + url: $("#noHistory##noRecordHistory#hiker://empty").rule((SRCSet, setupPages) => { + SRCSet(setupPages); + }, SRCSet, setupPages), + col_type: 'scroll_button' + }); + for (var i in tabs) { + if (tabs[i] != "") { + d.push({ + title: getMyVar(vari, '0') == i ? getHead(tabs[i] + '↓') : tabs[i], + url: $("#noLoading#").lazyRule((vari, i, Marksum) => { + if (parseInt(getMyVar(vari, '0')) != i) { + try { + eval('var SrcMark = ' + fetch("hiker://files/cache/SrcMark.json")); + } catch (e) { + var SrcMark = ""; + } + if (SrcMark == "") { + SrcMark = { route: {} }; + } else if (SrcMark.route == undefined) { + SrcMark.route = {}; + } + SrcMark.route[vari] = i; + var key = 0; + var one = ""; + for (var k in SrcMark.route) { + key++; + if (key == 1) { one = k } + } + if (key > Marksum) { delete SrcMark.route[one]; } + writeFile("hiker://files/cache/SrcMark.json", JSON.stringify(SrcMark)); + putMyVar(vari, i); + refreshPage(false); + return 'toast://切换成功' + } else { + return '#noHistory#hiker://empty' + } + }, vari, i, Marksum), + col_type: 'scroll_button' + }) + } + } + } + setTabs(tabs, MY_URL); + + //选集部份 + if (getMyVar('shsort') == '1') { var sx = '‘‘’’排序'; } else { var sx = '‘‘’’排序'; } + function setLists(lists, index) { + d.push({ + title: '‘‘’’选集列表' + '\t\t\t\t\t\t\t\t\t\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 + '', + url: $("#noLoading#").lazyRule(() => { + if (getMyVar('shsort') == '1') { putMyVar('shsort', '0'); } else { putMyVar('shsort', '1') }; + refreshPage(false); + return 'toast://切换排序成功' + }), + col_type: 'text_center_1' + }) + + var list = lists[index]; + function playlist(lx, len) {//定义选集列表生成 + if (lx == '1') { + if (isAPP == 0) { + var playtitle = parseDomForHtml(list[j], 'a&&Text'); + var playurl = parseDom(list[j], 'a&&href'); + } else { + var playtitle = list[j].split('$')[0]; + var playurl = list[j].split('$')[1]; + } + d.push({ + title: playtitle.replace(/第|集|话|期|-/g, ''), + url: playurl + DTJX, + extra: { id: playurl, referer: playurl, ua: PC_UA, jsLoadingInject: true, blockRules: ['.m4a', '.mp3', '.mp4', '.m3u8', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', '.css'] }, + col_type: list.length > 4 && len < 7 ? 'text_4' : 'text_3' + }); + } else { + d.push({ + title: '此影片无播放选集!', + url: '#noHistory#hiker://empty', + col_type: 'text_center_1' + }); + } + + } + if (list == undefined || list.length == 0) { + playlist('0'); + } else { + if (isAPP == 1) { + var listone = list[0].split('$')[0]; + } else { + var listone = parseDomForHtml(list[0], 'a&&Text'); + } + if (listone != "") { + var len = listone.length; + } + if (getMyVar('shsort') == '1') { + try { + for (var j = list.length - 1; j >= 0; j--) { + playlist('1', len); + } + } catch (e) { + playlist('0'); + } + } else { + try { + for (var j = 0; j < list.length; j++) { + playlist('1', len); + } + } catch (e) { + playlist('0'); + } + + } + } + } + setLists(lists, getMyVar(MY_URL, '0')); + //底部说明 + d.push({ + desc: '‘‘’’此规则仅限学习交流使用,请于导入后24小时内删除,任何团体或个人不得以任何方式方法传播此规则的整体或部分!', + url: 'toast://温馨提示:且用且珍惜!', + col_type: 'text_center_1' + }); + setResult(d); +} + +//搜索 +function sousuo(isverify,verifylx,waittime) { + var d = []; + var author = getMyVar('author', '0'); + var SrcQJJX = getItem('SrcQJJX', '1'); + var SrcGJFS = getItem('SrcGJFS', '2'); + var SrcXTNH = getItem('SrcXTNH', 'web'); + var SrcM3U8 = getItem('SrcM3U8', '1'); + try { + var isAPP = 是否APP; + } catch (e) { + var isAPP = 0; + } + + if (isAPP != 1) { + if(MY_URL.indexOf('empty##') > -1){ + var empty = 1; + }else{ + var empty = 0; + } + MY_URL = MY_URL.replace('hiker://empty##',''); + + try { + var MYUA = 指定UA; + } catch (e) { + var MYUA = MY_RULE.ua=="pc"?PC_UA:MOBILE_UA; + } + let headers = { + "User-Agent": MYUA + }; + verifylx = verifylx||(typeof (验证码) != "undefined"?"B":"A"); + waittime = (waittime*1000)||200; + var cookiename = MY_RULE.title+'cookie'; + if(getVar("SrcCookie")){ + putMyVar(cookiename,getVar("SrcCookie")); + clearVar("SrcCookie"); + } + + if(isverify==true&&!getMyVar(cookiename)){ + if(verifylx == "A"){ + log('网站有验证:进入手动过验证1'); + putMyVar('isverifyA','1'); + d.push({ + title:waittime>=1000?'点击前往验证,完成后过'+waittime/1000+'秒下拉刷新':'点击前往验证,完成后下拉刷新', + url: $("hiker://empty#noRecordHistory##noHistory#").rule((verify,url,headers,time)=>{ + verify(url, headers, time, 1); + },verify.A,MY_URL,JSON.stringify(headers),waittime), + extra: { id: "sousuo_verify" } + }) + }else{ + let cook = fetchCookie(验证码, { + headers: headers + }); + let cookie = JSON.parse(cook||'[]'); + putMyVar(cookiename, cookie.join(';')); + headers.Cookie = getMyVar(cookiename); + if(verify.B(验证码,认证链接,JSON.stringify(headers))=="ok"){ + log('网站有验证:自动过验证成功1'); + java.lang.Thread.sleep(waittime); + }else{ + log('网站有验证:自动过验证失败1'); + } + } + } + + if(getMyVar(cookiename)){ + headers.Cookie = getMyVar(cookiename); + } + + if(empty == 1){ + var html = request(MY_URL, { + headers: headers + }); + }else{ + var html = getResCode(); + } + + if (html.indexOf('检测中') != -1) { + html = request(MY_URL + '?btwaf' + html.match(/btwaf(.*?)\"/)[1], { + headers: headers + }); + } + + if (getMyVar('isverifyA','0')=="0"&&html.indexOf('系统安全验证') > -1) { + if(!isverify || verifylx == "A"){ + clearMyVar('isverifyA'); + log('网站有验证:进入手动过验证2'); + d.push({ + title:waittime>=1000?'点击前往验证,完成后过'+waittime/1000+'秒下拉刷新':'点击前往验证,完成后下拉刷新', + url: $("hiker://empty#noRecordHistory##noHistory#").rule((verify,url,headers,time)=>{ + verify(url, headers, time, 1); + },verify.A,MY_URL,JSON.stringify(headers),waittime) + }) + + }else{ + if(verify.B(验证码,认证链接,JSON.stringify(headers))=="ok"){ + log('网站有验证:自动过验证成功2'); + java.lang.Thread.sleep(waittime); + html = fetch(MY_URL, { + headers: headers + }); + }else{ + log('网站有验证:自动过验证失败2'); + d.push({ + title:'验证码自动识别出错,下拉刷新再次偿试', + url: "toast://验证码自动识别出错,下拉刷新再次偿试" + }) + } + } + } + if(/搜索时间间隔/.test(html)){ + d.push({ + title:'搜索有时间间隔,过几秒后再下拉刷新', + url: "toast://搜索有时间间隔,过几秒后再下拉刷新" + }) + } + + //log(html); + var list = parseDomForArray(html, 列表); + for (var i in list) { + try { + d.push({ + title: parseDomForHtml(list[i], 标题), + desc: parseDomForHtml(list[i], 描述), + content: parseDomForHtml(list[i], 内容), + pic_url: parseDom(list[i], 图片) + "@Referer=", + url: "hiker://empty##" + parseDom(list[i], 链接) + "#immersiveTheme#", + extra: { + pic: parseDom(list[i], 图片), + author: author, + SrcQJJX: SrcQJJX, + SrcGJFS: SrcGJFS, + SrcXTNH: SrcXTNH, + SrcM3U8: SrcM3U8 + } + }); + } catch (e) { } + } + } else { + //APP + try { + var url_api = 接口API; + } catch (e) { + var url_api = ""; + } + var urls = MY_URL.split('##'); + if (url_api == "" || !/^http/.test(url_api)) { + url_api = urls[1]; + } + if (url_api.indexOf('v1.vod') > -1) { + var url = url_api + '/detail?vod_id='; + MY_URL = url_api + urls[2].replace('search?text=', '?wd=');//http://lanmao.lanmaoymw.cn/ruifenglb_api.php/v1.vod?wd=**&page=fypage&limit=10//v1 + } else { + var url = url_api + 'video_detail?id='; + MY_URL = url_api + urls[2];//http://television.wkfile.com/api.php/app/search?text=**&pg=fypage&limit=10//app + } + try { + var MYUA = 指定UA; + } catch (e) { + var MYUA = 'Dalvik/2.1.0'; + } + try { + var html = JSON.parse(request(MY_URL, { headers: { 'User-Agent': MYUA } })); + } catch (e) { + d.push({ + title: 'APP接口访问出错,无法获取数据', + col_type: 'rich_text' + }); + var html = { data: { list: [] } }; + } + try { + var list = html.data.list; + } catch (e) { + try { + var list = html.list; + } catch (e) { + var list = html.data; + } + } + + try { + for (var i in list) { + d.push({ + title: list[i].vod_name, + desc: list[i].type_name + ' ' + list[i].vod_remarks + ' ' + list[i].vod_year, + content: list[i].vod_content, + pic_url: list[i].vod_pic + "@Referer=", + url: 'hiker://empty##' + url + list[i].vod_id + "#immersiveTheme#", + extra: { + pic: list[i].vod_pic, + author: author, + SrcQJJX: SrcQJJX, + SrcGJFS: SrcGJFS, + SrcXTNH: SrcXTNH, + SrcM3U8: SrcM3U8 + } + }); + } + } catch (e) { } + } + setResult(d) +} + +//最新章节 +function zuixin() { + try { + var isAPP = 是否APP; + } catch (e) { + var isAPP = 0; + } + + if (MY_URL.indexOf('hiker://empty##') > -1) { + if (isAPP == 0) { + try { + var MYUA = 指定UA; + } catch (e) { + var MYUA = MY_RULE.ua=="pc"?PC_UA:MOBILE_UA; + } + var html = request(MY_URL.split('##')[1], { + headers: { + 'User-Agent': MYUA + } + }); + } else { + var html = JSON.parse(request(MY_URL.split('##')[1], { headers: { 'User-Agent': 'Dalvik/2.1.0' } })); + } + } else { + if (isAPP == 0) { + var html = getResCode(); + } else { + var html = JSON.parse(getResCode()); + } + } + + if (isAPP == 1) { + var conts = html.data.vod_url_with_player || html.data.vod_play_list;//影片列表 + var list = conts[0].url.split('#');//影片定位 + var title = list[list.length - 1].split('$')[0]; + } else { + var conts = parseDomForArray(html, 影片列表)[0];//影片列表 + var list = parseDomForArray(conts, 单个影片);//影片定位 + var title = parseDomForHtml(list[list.length - 1], 'a&&Text'); + } + + setResult("更新至: " + title); +} + +//一级动态分类 +function yijidtfl(isverify,verifylx,waittime) { + Version(); + addListener("onClose", $.toString(() => { + clearMyVar('isverifyA'); + })); + var d = d || [] + var author = MY_RULE.author; + var SrcQJJX = getItem('SrcQJJX', '1'); + var SrcGJFS = getItem('SrcGJFS', '3'); + var SrcXTNH = getItem('SrcXTNH', 'web'); + var SrcM3U8 = getItem('SrcM3U8', '1'); + var 分类颜色 = '#3399cc'; + var page = MY_PAGE; + var true_url = getMyVar('header.url', MY_URL); + let 链接处理工具 = require(config.依赖.match(/http(s)?:\/\/.*\//)[0] + 'plugins/UrlProcessor.js') + true_url = 链接处理工具 + .链接(true_url) + .页码(page) + .获取处理结果(); + MY_URL = true_url; + try { + var MYUA = 指定UA; + } catch (e) { + var MYUA = MY_RULE.ua=="pc"?PC_UA:MOBILE_UA; + } + let headers = { + "User-Agent": MYUA + }; + + verifylx = verifylx||(typeof (验证码) != "undefined"?"B":"A"); + waittime = (waittime*1000)||200; + var cookiename = MY_RULE.title+'cookie'; + if(getVar("SrcCookie")){ + putMyVar(cookiename,getVar("SrcCookie")); + clearVar("SrcCookie"); + } + if(isverify==true&&!getMyVar(cookiename)){ + if(verifylx == "A"){ + if(getMyVar('verifyA','0')=="0"){ + putMyVar('verifyA','1'); + log('网站有验证:进入手动过验证1'); + verify.A(MY_URL, JSON.stringify(headers), waittime); + } + }else{ + let cook = fetchCookie(验证码, { + headers: headers + }); + let cookie = JSON.parse(cook||'[]'); + putMyVar(cookiename, cookie.join(';')); + headers.Cookie = getMyVar(cookiename); + if(verify.B(验证码,认证链接,JSON.stringify(headers))=="ok"){ + log('网站有验证:自动过验证成功1'); + java.lang.Thread.sleep(waittime); + }else{ + log('网站有验证:自动过验证失败1'); + } + } + } + + if(getMyVar(cookiename)){ + headers.Cookie = getMyVar(cookiename); + } + + var html = fetch(MY_URL, { + headers: headers + }) + if (html.indexOf('检测中') != -1) { + html = fetch(MY_URL + '?btwaf' + html.match(/btwaf(.*?)\"/)[1], { + headers: headers + }); + } + if (html.indexOf('系统安全验证') > -1) { + if(!isverify || verifylx == "A"){ + if(getMyVar('verifyA','0')=="0"){ + putMyVar('verifyA','1'); + log('网站有验证:进入手动过验证2'); + verify.A(MY_URL, JSON.stringify(headers), waittime); + } + }else{ + if(verify.B(验证码,认证链接,JSON.stringify(headers))=="ok"){ + log('网站有验证:自动过验证成功2'); + java.lang.Thread.sleep(waittime); + html = fetch(MY_URL, { + headers: headers + }); + }else{ + log('网站有验证:自动过验证失败2'); + d.push({ + title:'验证码自动识别出错,下拉刷新再次偿试', + url: $("#noLoading#").lazyRule(() => { + refreshPage(false); + return 'toast://已刷新'; + }), + col_type: "text_1" + }) + } + } + } + + // '0' 为默认不折叠,'1' 为默认折叠 + const 当前折叠状态 = getMyVar('header.fold', '1') + + // 引入动态分类依赖 + // 框架已经稳定,使用 require 更佳 + let htmlCategories = require(config.依赖.match(/http(s)?:\/\/.*\//)[0] + 'plugins/categories-header.js') + htmlCategories.界面(d) + .分类链接(true_url) + .源码(html) + .页码(page) + .添加分类定位(定位列表) + .开启内置折叠功能() // 必须 + .折叠按钮样式({ + title: 当前折叠状态 == "1" ? "‘‘️▼’’" : "‘‘▲’’" + }) // 可选 + .折叠(当前折叠状态) // 必须 + .选中的分类颜色(分类颜色) + .开始打造分类(); + var list = pdfa(html, 列表); + for (var i in list) { + try { + d.push({ + title: parseDomForHtml(list[i], 标题), + desc: parseDomForHtml(list[i], 描述), + pic_url: 图片.indexOf('@') == -1 ? parseDom(list[i], 图片) + "@Referer=" : 图片.split('@')[1] == "-" ? parseDom(list[i], 图片.split('@')[0]) : parseDom(list[i], 图片.split('@')[0]) + "@" + 图片.split('@')[1], + url: "hiker://empty##" + parseDom(list[i], 链接) + "#immersiveTheme#", + extra: { + pic: parseDom(list[i], 图片.split('@')[0]), + author: author, + SrcQJJX: SrcQJJX, + SrcGJFS: SrcGJFS, + SrcXTNH: SrcXTNH, + SrcM3U8: SrcM3U8 + } + }); + } catch (e) { } + } + 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; + } +} + +var SrcParseS = { + formatUrl: function (url, i) { + try { + if (url.trim() == "") { + return "toast://解析失败,建议切换线路或更换解析方式"; + } else { + if (url[0] == '/') { url = 'https:' + url } + if (i == undefined) { + if (getMyVar('SrcM3U8', '1') == "1") { + url = cacheM3u8(url); + } + if (/wkfile/.test(url)) { + url = url + ';{User-Agent@Mozilla/5.0&&Referer@https://fantuan.tv/}'; + } else if (/bilibili|bilivideo/.test(url)) { + url = url + ";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com/}"; + } else if (/shenglinyiyang\.cn/.test(url)) { + url = url + ";{User-Agent@Mozilla/5.0&&Referer@https://zyz.sdljwomen.com}"; + } + /* else { + url = url + ";{User-Agent@Mozilla/5.0}"; + }*/ + } else { + if (getMyVar('SrcM3U8', '1') == "1") { + url = cacheM3u8(url, {}, 'video' + parseInt(i) + '.m3u8') + '#pre#'; + } + } + return url + '#isVideo=true#'; + } + } catch (e) { + return url; + } + }, + 嗅探: function (vipUrl) { + showLoading('√嗅探解析中,请稍候'); + return (getMyVar('SrcXTNH', 'web') == 'x5' ? 'x5Rule://' : 'webRule://') + vipUrl + '@' + $.toString((formatUrl) => { + if (typeof (request) == 'undefined' || !request) { + eval(fba.getInternalJs()); + }; + if (window.c == null) { + window.c = 0; + }; + window.c++; + if (window.c * 250 >= 15 * 1000) { + fba.hideLoading(); + return "toast://解析超时,建议切换线路或更换解析方式"; + } + //fba.log(fy_bridge_app.getUrls()); + var urls = _getUrls(); + var exclude = /m3u8\.tv/; + 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])) { + //fba.log(urls[i]); + if(fy_bridge_app.getHeaderUrl) + //return fy_bridge_app.getHeaderUrl(urls[i]).replace(";{", "#isVideo=true#;{"); + return $$$("#noLoading#").lazyRule((url) => { + return cacheM3u8(url.split(";{")[0])+"#isVideo=true#;{"+url.split(";{")[1]; + }, fy_bridge_app.getHeaderUrl(urls[i])); + else { + return $$$("#noLoading#").lazyRule((url, formatUrl) => { + //url = url.replace(/http.*?\?url=/, ''); + return formatUrl(url); + }, urls[i], formatUrl); + } + } + } + }, this.formatUrl) + }, + 智能: function (vipUrl, input) { + showLoading('√智能解析中,请稍候'); + var video = ""; + try { + if (vipUrl.search(/LT-/) > -1) { + var jxList = ["https://ltjx.jeeves.vip/home/api?type=ys&uid=461939&key=degkpqruyzACEJLORW&url=", "https://ltjx.jeeves.vip/home/api?type=ys&uid=1589472&key=aehjpzAHILOPQRU456&url=", "https://vip.legendwhb.cn/m3u8.php?url=", "https://jx.zjmiao.com/?url=", "https://09tv.top/jx/?url="]; + var keyList = ["", "", "D63D64E0EDA774E3", "63f49d21a0dccf3c", "A42EAC0C2B408472"]; + var refList = ["", "", "https://wnvod.net", "", "https://09tv.top"]; + var jxLX = ["O", "O", "M", "M", "M"]; + for (var i = 0; i < jxList.length; i++) { + if (jxLX[i] != "M") { + video = this.明码(jxList[i] + vipUrl); + if (video.slice(0, 4) == 'http') { + break; + } else { + log('线路LT:' + jxList[i] + ' 解析异常'); + } + } else { + video = this.maoss(jxList[i] + vipUrl, refList[i], keyList[i]); + if (video.slice(0, 4) == 'http') { + break; + } else { + log('线路LT:' + jxList[i] + ' 解析异常'); + } + } + } + } else if (/renrenmi-/.test(vipUrl)) { + var jxList = ["https://jx.blbo.cc:4433/analysis.php?v=", "https://jx.renrenmi.cc/?url=", "https://a.dxzj88.com/jxrrm/jiami.php?url="]; + for (var i = 0; i < jxList.length; i++) { + video = this.明码(jxList[i] + vipUrl); + if (video.slice(0, 4) == 'http') { + break; + } else { + log('线路RR:' + jxList[i] + ' 解析异常'); + } + } + } else if (/RongXingVR/.test(vipUrl)) { + var jxList = ["https://vip.rongxingvr.top/api/?key=CMTJsEtHIzsLqZ6OGl&url=", "https://tc.yuanmajs.cn/jxplayer.php?v="]; + for (var i = 0; i < jxList.length; i++) { + video = this.明码(jxList[i] + vipUrl); + if (video.slice(0, 4) == 'http') { + break; + } else { + log('线路RX:' + jxList[i] + ' 解析异常'); + } + } + } else if (/wuduyun-/.test(vipUrl)) { + var jxList = ["http://jf.1080p.icu:3232/home/api?type=dsp&uid=147565&key=adilmopuBEFJNUV067&url="]; + for (var i = 0; i < jxList.length; i++) { + video = this.明码(jxList[i] + vipUrl); + if (video.slice(0, 4) == 'http') { + break; + } else { + log('线路WD:' + jxList[i] + ' 解析异常'); + } + } + } else if (/xueren-/.test(vipUrl)) { + var jxList = ["https://www.shangjihuoke.com/json.php/?url="]; + for (var i = 0; i < jxList.length; i++) { + video = this.明码(jxList[i] + vipUrl); + if (video.slice(0, 4) == 'http') { + break; + } else { + log('线路XR:' + jxList[i] + ' 解析异常'); + } + } + } else if (/\.suoyo|adHuRo0dcuHoM163L1/.test(vipUrl)) { + var apiList = ["https://p.tjomet.com/duoduo/api.php", "https://jiexi.ysgc.xyz/api.php"]; + var refList = ["https://www.ysgc.cc/", "https://www.ysgc.cc/"]; + if (/suoyo/.test(vipUrl)) { + //明码https://a.dxzj88.com/jxdd/dd.php?url= + vipUrl = 'adHuRo0dcuHoM163L1y49tM3U4LmNhY2hlLnN1b3lvLmNj' + base64Encode(vipUrl.replace('https://m3u8.cache.suoyo.cc', '')); + } + for (var i = 0; i < apiList.length; i++) { + video = this.DD(vipUrl, apiList[i], refList[i]); + if (video.slice(0, 4) == 'http') { + break; + } else { + log('线路DD:' + apiList[i] + ' 解析异常'); + } + } + } else if (/ruifenglb/.test(vipUrl)) { + var jxList = ["http://player.yjhan.com:8090/api/?key=sQWHLErduwNEmxfx3V&url=", "https://004.summ.vip/?url=", "https://shangjihuoke.com/CL4K/?url="]; + var keyList = ["", "A42EAC0C2B408472", "A42EAC0C2B408472"]; + var refList = ["", "", ""]; + var jxLX = ["O", "M", "M"]; + for (var i = 0; i < jxList.length; i++) { + if (jxLX[i] != "M") { + video = this.明码(jxList[i] + vipUrl); + if (video.slice(0, 4) == 'http') { + break; + } else { + log('线路RX:' + jxList[i] + ' 解析异常'); + } + } else { + video = this.maoss(jxList[i] + vipUrl, refList[i], keyList[i]); + if (video.slice(0, 4) == 'http') { + break; + } else { + log('线路CL4K:' + jxList[i] + ' 解析异常'); + } + } + } + } else if (/xfy-/.test(vipUrl)) { + video = this.maoss("https://jx.zjmiao.com/?url=" + vipUrl, "", "63f49d21a0dccf3c"); + } else if (/\.mp4|\.m3u8/.test(vipUrl)) { + video = vipUrl; + } else if (/youku|mgtv|ixigua|qq\.com|iqiyi|migu|bilibili|sohu|pptv|\.le\.|\.1905|cctv/.test(vipUrl)) { + if (getMyVar('SrcGJFS', '1') == "2") { + return this.DN(vipUrl); + } else { + return this.嗅探(input); + } + } + } catch (e) { } + if (video == "") { + return this.嗅探(input); + } else { + return this.formatUrl(video); + } + }, + 官网: function (vipUrl, jxUrl, isDn) { + try { + if (getMyVar('SrcGJFS', '1') == "2" || isDn == "1") { + return this.DN(vipUrl); + } else { + if (getMyVar('author') == "帅√`人才") { + return this.聚嗅(vipUrl); + } else { + if (jxUrl == "" || jxUrl == undefined) { jxUrl = "https://jx.blbo.cc:4433/?url=" } + return this.嗅探(jxUrl + vipUrl); + } + } + } catch (e) { + return ''; + } + }, + 明码: function (playUrl, ref) { + try { + if (ref == "") { + var html = request(playUrl, { timeout: 5000 }); + } else { + var html = request(playUrl, { headers: { 'Referer': ref }, timeout: 5000 }); + } + try { + let rurl = JSON.parse(html).url || JSON.parse(html).data; + if (typeof (rurl) != "undefined") { + var url = rurl; + } + } catch (e) { + var url = html.match(/urls = "(.*?)"/)[1]; + } + return url; + } catch (e) { + return ''; + } + }, + maoss: function (playUrl, ref, key) { + try { + if (ref) { + var html = request(playUrl, { headers: { 'Referer': ref }, timeout: 8000 }); + } else { + var html = request(playUrl, { timeout: 8000 }); + } + if (html.indexOf('&btwaf=') != -1) { + html = request(playUrl + '&btwaf' + html.match(/&btwaf(.*?)"/)[1], { headers: { 'Referer': ref }, timeout: 8000 }) + } + var iv = html.match(/_token = "(.*?)"/)[1]; + + var getVideoInfo = function (text) { + eval(getCryptoJS()); + var video = CryptoJS.AES.decrypt(text, CryptoJS.enc.Utf8.parse(key), { + 'iv': CryptoJS.enc.Utf8.parse(iv), + 'mode': CryptoJS.mode.CBC + }).toString(CryptoJS.enc.Utf8); + return video; + }; + eval(html.match(/var config = {[\s\S]*?}/)[0]); + if (config.url.slice(0, 4) != 'http') { + config.url = getVideoInfo(config.url); + } + if (config.url != "" && config.url.slice(0, 4) != 'http') { + config.url = decodeURIComponent(config.url); + } + return config.url; + } catch (e) { + return ''; + } + }, + DD: function (vipUrl, apiUrl, ref) { + try { + if (apiUrl == "" || apiUrl == undefined) { + /* + if(getMyVar('ddfrom', '')=="duoduozy"){ + apiUrl = "https://player.tjomet.com/ysgc/qa9ty92aTSGHwn3X.jpg" + }else{ + apiUrl = "https://ysgc.tjomet.com/qa9ty92aTSGHwn3X.jpg" + } + clearMyVar('ddfrom'); + */ + apiUrl = "https://ysgc.tjomet.com/qa9ty92aTSGHwn3X.jpg" ; + } + var html = request("https://ysgc.tjomet.com/?url="+vipUrl,{timeout:5000}); + eval(html.match(/var config = {[\s\S]*?}/)[0] + ''); + var bod = 'url=' + config.url + "&vkey=" + config.vkey + "&token=" + config.token + "&sign=bKvCXSsVjPyTNr9R"; + var json = JSON.parse(request(apiUrl, { method: 'POST', body: bod })); + eval(fetch("https://vkceyugu.cdn.bspapp.com/VKCEYUGU-03ee1f89-f0d4-49aa-a2b3-50e203514d8a/2e54cc42-9b4c-457d-b2de-0cdf3e2aeeaa.js"));//https://p.tjomet.com/duoduo/js/decode.js + let url = getVideoInfo(json.url); + if(/^http/.test(url)){ + return url; + }else{ + var jsonstr = JSON.parse(request("https://p.tjomet.com/lff/api.php", { headers: { 'Referer': ref }, method: 'POST', body: 'url=' + vipUrl })); + eval(getCryptoJS()); + return CryptoJS.AES.decrypt(jsonstr.url, CryptoJS.enc.Utf8.parse(CryptoJS.MD5('rXjWvXl6')), { + 'iv': CryptoJS.enc.Utf8.parse('NXbHoWJbpsEOin8b'), + 'mode': CryptoJS.mode.CBC, + 'padding': CryptoJS.pad.ZeroPadding + }).toString(CryptoJS.enc.Utf8); + } + } catch (e) { + return ''; + } + }, + DD2: function (vipUrl, apiUrl, ref) { + try { + if(/youku|mgtv|ixigua|qq\.com|iqiyi|migu|bilibili|sohu|pptv|\.le\.|\.1905|cctv/.test(url)) { + return SrcParseS.官网(url); + } else { + if (apiUrl == "" || apiUrl == undefined) { apiUrl = "https://bo.dd520.cc/xmplayer/duoduo.php" } + if (ref == "" || ref == undefined) { ref = "http://www.xawqxh.net" } + vipUrl = "ahHgRj0kceHdMc66L5y4" + base64Encode(vipUrl).slice(10); + //var json = JSON.parse(request(apiUrl, { headers: { 'Referer': ref }, method: 'POST', body: 'url=' + vipUrl })); + var json = JSON.parse(request(apiUrl, { method: 'POST', body: 'url=' + vipUrl })); + eval(getCryptoJS()); + return CryptoJS.AES.decrypt(json.url, CryptoJS.enc.Utf8.parse(CryptoJS.MD5('rXjWvXl6')), { + 'iv': CryptoJS.enc.Utf8.parse('NXbHoWJbpsEOin8b'), + 'mode': CryptoJS.mode.CBC, + 'padding': CryptoJS.pad.ZeroPadding + }).toString(CryptoJS.enc.Utf8); + } + } catch (e) { + return ''; + } + }, + DN: function (vipUrl) { + evalPrivateJS("OjB3OHrVodkVQlHIU8UUAC5W0ZBgTQEC4h9eUEcAT9kEM0hY/45YOxs7PDeQEnxjVhaWW2tIqO5GQimD4ssHKSka505+O0avEtQQZ9zRy6GxaBZdTHrbCPcoNIajmr3+JG22tRswOJFYDX5aYk0PfUDEFsZa2OjZbz+xTthnoUPLNm0R2g1kBFnWwGKBWUxEhEsFwFruhFSaxJi1E1WZ7WlbP0v4OpoQgn6M7UXGahP9h2fHi8UBVDGfjzIuVuJSCgICLlVGaAbT0ghic+Kfbp3TmjRhAo1DKretYp1U53apDMvO2Q+6oAyO1js5TJwx51ygFSUqVGAu0C2DLxkG0Z3+L8UPZyJa4KVDlqq/goE=") + return aytmParse(vipUrl); + }, + 聚嗅: function (vipUrl, x5jxlist) { + var jxhtml = config.依赖.match(/http(s)?:\/\/.*\//)[0] + 'SrcJiexi.html'; + fc(jxhtml, 48); + let libsjxjs = fetch("hiker://files/libs/" + md5(jxhtml) + ".js"); + if (x5jxlist != undefined) { + if (x5jxlist.length > 0) { + libsjxjs = libsjxjs.replace(libsjxjs.match(/apiArray=(.*?);/)[1], JSON.stringify(x5jxlist)) + } + } + let libsjxhtml = "hiker://files/libs/" + md5(jxhtml) + ".html"; + writeFile(libsjxhtml, libsjxjs); + return this.嗅探(getPath(libsjxhtml) + '?url=' + vipUrl); + }, + mulheader: function (url) { + if (/mgtv/.test(url)) { + var header = { 'User-Agent': 'Mozilla/5.0', 'Referer': 'www.mgtv.com' }; + } else if (/bilibili|bilivideo/.test(url)) { + var header = { 'User-Agent': 'Mozilla/5.0', 'Referer': 'www.bilibili.com' }; + } else if (/wkfile/.test(url)) { + var header = { 'User-Agent': 'Mozilla/5.0', 'Referer': 'fantuan.tv' }; + } else { + var header = { 'User-Agent': 'Mozilla/5.0' }; + } + return header; + }, + APP: function (vipUrl) { + var appParses = getMyVar('parse_api', ''); + var Uparselist = []; + Uparselist = appParses.split(','); + 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; + } + Uparselist = uniq(Uparselist);//去重 + var x5jxlist = []; //x5嗅探接口存放数组 + var url = ""; + var parseurl = ""; + var urls = [];//多线路地址 + var headers = [];//多线路头信息 + var exclude = /404\.m3u8|xiajia\.mp4|余额不足\.m3u8|\.suoyo|\.ruifenglb|m3u8\.tv/;//设置排除地址 + var contain = /\.mp4|\.m3u8|\.flv|\.avi|\.mpeg|\.wmv|\.mov|\.rmvb|\.dat|qqBFdownload|mime=video%2F|video_mp4/;//设置符合条件的正确地址 + if (!exclude.test(vipUrl) && contain.test(vipUrl)) { + url = vipUrl; + } + for (var i = 0; i < Uparselist.length; i++) { + if (contain.test(url)) { break; } + if (x5jxlist.length >= 3) { break; } + let UrlList = []; + let p = i + 3; + if (p > Uparselist.length) { p = Uparselist.length } + for (let s = i; s < p; s++) { + parseurl = Uparselist[s]; + if (parseurl[0] == '/') { parseurl = 'https:' + parseurl } + if (parseurl.substring(0, 4) == 'http') { + UrlList.push(parseurl); + } + i = s; + } + if (UrlList.length > 0) { + let playUrls = UrlList.map((playUrl) => { + return { + url: playUrl + vipUrl, + options: { headers: { 'User-Agent': PC_UA }, timeout: 2000 } + } + }); + + let bfhtml = batchFetch(playUrls); + for (let k in bfhtml) { + let gethtml = bfhtml[k]; + parseurl = UrlList[k]; + if (gethtml == undefined || gethtml == "" || !/<|{/.test(gethtml)) { + //url直链网页打不开 + } else { + try { + try { + var rurl = JSON.parse(gethtml).url || JSON.parse(gethtml).data; + } catch (e) { + try { + var rurl = gethtml.match(/urls = "(.*?)"/)[1]; + } catch (e) { + x5jxlist.push(parseurl); + } + } + if (typeof (rurl) != "undefined" && contain.test(rurl) && !exclude.test(rurl)) { + url = rurl; + urls.push(this.formatUrl(url, urls.length)); + headers.push(this.mulheader(url)); + } + } catch (e) { } + } + }//批量结果循环 + } + } + + if (url == "") { + if (/youku|mgtv|ixigua|qq\.com|iqiyi|migu|bilibili|sohu|pptv|\.le\.|\.1905|cctv/.test(vipUrl)) { + if (getMyVar('SrcGJFS', '1') == "2") { + return this.DN(vipUrl); + } else { + if (getMyVar('author') == "帅√`人才") { + return this.聚嗅(vipUrl); + } else { + return this.聚嗅(vipUrl, x5jxlist); + } + } + } else { + if (getMyVar('author') == "帅√`人才") { + return this.智能(vipUrl); + } else { + return this.聚嗅(vipUrl, x5jxlist); + } + } + } else { + if (urls.length > 1) { + return JSON.stringify({ + urls: urls, + headers: headers + }); + } else { + return this.formatUrl(url); + } + } + } +} + +function SRCSet(setupPages) { + addListener("onClose", $.toString(() => { + //clearMyVar('官网'); + refreshPage(false); + })); + setPageTitle("♥设置"); + + function getTitle(title, Color) { + return '' + title + ''; + } + var d = []; + //if(getMyVar('islazy', '0') =="1"){ + d.push({ + title: '↓按需求修改此小程序的相关设置↓', + col_type: "rich_text" + }); + d.push({ + col_type: "line_blank" + }); + + //全局解析设置:1为自行编写动态解析,2为帅模板的通用嗅探解析 + var QJJX = getMyVar('SrcQJJX', '1'); + putMyVar('SrcQJJX', QJJX); + var islazy = getMyVar('islazy', '0'); + d.push({ + title: islazy == "1" && QJJX == '1' ? `‘‘’’全局解析方式:‘‘’’小程序的解析规则` : `‘‘’’全局解析方式:‘‘’’帅模板的嗅探逻辑`, + url: islazy == "0" ? 'toast://规则没有lazy解析,使用模板解析' : $('#noLoading#').lazyRule((QJJX) => { + if (QJJX == '1') { + setItem('SrcQJJX', '2'); + putMyVar('SrcQJJX', '2'); + var sm = "帅模板的嗅探规则"; + } else { + setItem('SrcQJJX', '1'); + putMyVar('SrcQJJX', '1'); + var sm = "小程序的解析规则"; + } + refreshPage(false); + return 'toast://全局解析方式:' + sm; + }, QJJX), + col_type: "text_1" + }); + for (let i = 0; i < 10; i++) { + d.push({ + col_type: "blank_block" + }) + } + d.push({ + col_type: "line_blank" + }); + //设置针对官网资源的默认解析方式:1为规则自定义解析,2为断插解析,3为嗅探解析 + + var GJFSsm = getTitle('官方资源解析方式:', '#098AC1'); + var GJFS = islazy == '1' ? getMyVar('SrcGJFS', '1') : getMyVar('SrcGJFS', '3'); + putMyVar('SrcGJFS', GJFS); + d.push({ + title: islazy == '1' && GJFS == '1' ? GJFSsm + getTitle('规则的动态解析', '#f13b66a') : GJFS == '2' ? GJFSsm + getTitle('调用断插解析', '#f13b66a') : GJFSsm + getTitle('模板嗅探解析', '#f13b66a'), + col_type: "rich_text" + }); + d.push({ + col_type: 'line' + }); + if (islazy == '1' && QJJX == '1') { + d.push({ + title: GJFS == '1' ? getTitle('规则', '#f13b66a') : '规则', + url: `#noLoading#@lazyRule=.js:setItem('SrcGJFS','1');putMyVar('SrcGJFS','1');refreshPage(false);'toast://官方资源解析方式:规则lazy自定义';`, + img: "https://lanmeiguojiang.com/tubiao/ke/23.png", + col_type: "icon_small_3" + }); + } + if (getMyVar('官网', '0') == "1" || getMyVar('是否APP','0') == "1") { + d.push({ + title: GJFS == '2' ? getTitle('断插', '#f13b66a') : '断插', + url: `#noLoading#@lazyRule=.js:setItem('SrcGJFS','2');putMyVar('SrcGJFS','2');refreshPage(false);'toast://官方资源解析方式:调用断插解析';`, + img: "https://lanmeiguojiang.com/tubiao/ke/24.png", + col_type: "icon_small_3" + }); + d.push({ + title: GJFS == '3' ? getTitle('嗅探', '#f13b66a') : '嗅探', + url: `#noLoading#@lazyRule=.js:setItem('SrcGJFS','3');putMyVar('SrcGJFS','3');refreshPage(false);'toast://官方资源解析方式:模板嗅探解析';`, + img: "https://lanmeiguojiang.com/tubiao/ke/25.png", + col_type: "icon_small_3" + }); + } + for (let i = 0; i < 10; i++) { + d.push({ + col_type: "blank_block" + }) + } + d.push({ + col_type: "line_blank" + }); + if (GJFS == '2') { + for (let i = 0; i < 10; i++) { + d.push({ + col_type: "blank_block" + }) + } + d.push({ + title: '断插接口设置', + url: fileExist('hiker://files/cache/fileLinksᴰⁿ.txt') ? setupPages("设置") : "hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#", + img: "https://lanmeiguojiang.com/tubiao/messy/30.svg", + col_type: "icon_2" + }); + d.push({ + title: '解析接口管理', + url: fileExist('hiker://files/cache/fileLinksᴰⁿ.txt') ? setupPages("编辑") : "hiker://page/Route?rule=MyFieldᴰⁿ&type=编辑#noRecordHistory#", + img: "https://lanmeiguojiang.com/tubiao/messy/17.svg", + col_type: "icon_2" + }); + for (let i = 0; i < 10; i++) { + d.push({ + col_type: "blank_block" + }) + } + d.push({ + col_type: "line_blank" + }); + } + + if (GJFS == '3' || QJJX == '2') { + var XTNH = getMyVar('SrcXTNH', 'web'); + putMyVar('SrcXTNH', XTNH); + d.push({ + title: XTNH == 'web' ? getTitle('通用嗅探内核:', '#098AC1') + getTitle('webview内核', '#f13b66a') : getTitle('通用嗅探内核:', '#098AC1') + getTitle('腾讯x5内核', '#f13b66a'), + col_type: "rich_text" + }); + d.push({ + col_type: 'line' + }); + d.push({ + title: '使用x5内核', + url: `#noLoading#@lazyRule=.js:setItem('SrcXTNH','x5');putMyVar('SrcXTNH','x5');refreshPage(false);'toast://通用嗅探内核:腾讯x5内核';`, + img: "https://lanmeiguojiang.com/tubiao/ke/127.png", + col_type: "icon_2" + }); + d.push({ + title: '使用web内核', + url: `#noLoading#@lazyRule=.js:setItem('SrcXTNH','web');putMyVar('SrcXTNH','web');refreshPage(false);'toast://通用嗅探内核:webview内核';`, + img: "https://lanmeiguojiang.com/tubiao/more/251.png", + col_type: "icon_2" + }); + for (let i = 0; i < 10; i++) { + d.push({ + col_type: "blank_block" + }) + } + d.push({ + col_type: "line_blank" + }); + } + var M3U8 = getMyVar('SrcM3U8', '1'); + putMyVar('SrcM3U8', M3U8); + d.push({ + title: M3U8 == '1' ? `‘‘’’m3u8播放连接方式:‘‘’’通过缓存m3u8文件` : `‘‘’’m3u8播放连接方式:‘‘’’直接在线访问`, + url: $('#noLoading#').lazyRule((M3U8) => { + if (M3U8 == '1') { + setItem('SrcM3U8', '2'); + putMyVar('SrcM3U8', '2'); + var sm = "直接在线访问,有可能会失效,但兼容通用性好"; + } else { + setItem('SrcM3U8', '1'); + putMyVar('SrcM3U8', '1'); + var sm = "通过缓存m3u8文件,避免可能失效,但某些场景不支持"; + } + refreshPage(false); + return 'toast://m3u8播放连接方式:' + sm; + }, M3U8), + col_type: "text_1" + }); + for (let i = 0; i < 10; i++) { + d.push({ + col_type: "blank_block" + }) + } + d.push({ + col_type: "line_blank" + }); + //} + d.push({ + title: '恢复设置', + url: `#noLoading#@lazyRule=.js:clearItem('SrcQJJX');clearMyVar('SrcQJJX');clearItem('SrcGJFS');clearMyVar('SrcGJFS');clearItem('SrcXTNH');clearMyVar('SrcXTNH');clearItem('SrcM3U8');clearMyVar('SrcM3U8');refreshPage(false);'toast://已恢复小程序默认设置';`, + img: "https://lanmeiguojiang.com/tubiao/ke/56.png", + col_type: "icon_4" + }); + d.push({ + title: '清除缓存', + url: `#noLoading#@lazyRule=.js:deleteCache();back(true);'toast://已清除小程序所有依赖缓存';`, + img: "https://lanmeiguojiang.com/tubiao/more/334.png", + col_type: "icon_4" + }); + setResult(d); +} +//验证 +var verify = { + A: function (yurl, headers, waittime, isss) {//手动过验证 + //log(yurl);log(headers);log(ua);log(timeout); + var d = []; + headers = JSON.parse(headers)||{}; + d.push({ + desc: '100%&&float', + url: yurl, + extra: { + ua: headers, + js: $.toString((time,isss) => { + var cook = document.cookie; + var html = document.documentElement.outerHTML; + if (!/系统安全验证/.test(html)){ + fba.showLoading('验证中,请稍候'); + fba.putVar("SrcCookie", cook); + if(isss==1){ + setTimeout("fba.back()",200); + }else{ + fba.setTimeout(fba.parseLazyRule(`hiker://empty@lazyRule=.js:refreshX5WebView('');refreshPage(true);hideLoading();`), time); + } + } + },waittime,isss), + jsLoadingInject: true + }, + col_type: 'x5_webview_single' + }); + setResult(d); + }, + B: function (verifyimg,verifyapi,headers) {//自动过字母数字验证 + //log(verifyimg);log(verifyapi);log(headers); + headers = JSON.parse(headers)||{}; + const File = java.io.File; + let javaImport = new JavaImporter(); + javaImport.importPackage( + Packages.com.example.hikerview.utils + ); + var bsimg = ""; + with(javaImport) { + let png = "hiker://files/cache/SrcVerify.png"; + downloadFile(verifyimg, png, headers); + let path = getPath(png).replace("file://", ""); + bsimg = _base64.encodeToString(FileUtil.fileToBytes(path), _base64.NO_WRAP); + new File(path).delete(); + } + evalPrivateJS("aHTJW8GUqk24nqdf1KutpXLSQxxUqCopcaSjWa/1BqbspogsD9sqzzRKQ0/eY1cbHWXKqK/7SmE36413GhDw1/LB4qZbC87N46M3cbGebQKVsuA+wqokqyn1sWZEySrRyJHtbzpZgnEP0XYECOKzPs0qEDbm2B+3gV+JGJA37bwIqwzm/veCOIIpZgmIiRR++Nd7tnLMDBM+/vxyS+MXfE2IYkez6NE1hioj8TQ9X7UxWHZGX1PS2hc8lotTz+2qqC3Kwy5Jx6cr8zh4grgoykYsrWLjm4wLbAoSHl3Oe6QNNx+Tloen/mKR5K8c2B7xsnPja73djQkKloPGX+pCQHx8DJHZqptu2ObISfk3jBqUk2o06nxPvcT1geVKM4Sz") + + let vcode = ocr(bsimg,config.依赖); + //log(vcode); + let result = fetch(verifyapi + vcode, { + headers: headers, + method: 'POST' + }); + try { + return JSON.parse(result).msg; + } catch (e) { + return ""; + } + } +} +//版本检测 +function Version() { + var nowVersion = 5.5;//现在版本 + if (getVar('srcDyTmpl-VersionCheck', '0') == '0') { + try { + eval(fetch(config.依赖.match(/http(s)?:\/\/.*\//)[0] + 'SrcTmplVersion.js')) + if (newVersion.srcDyTmpl > nowVersion) { + deleteCache(); + require(config.依赖); + log('检测到新依赖文件,已更新!'); + } + } catch (e) { } + putVar('srcDyTmpl-VersionCheck', '1'); + } } \ No newline at end of file