//本代码仅用于个人学习,请勿用于其他作用,下载后请24小时内删除,代码虽然是公开学习的,但请尊重作者,应留下说明 //接口一级 function jiekouyiji() { addListener("onClose", $.toString(() => { clearMyVar('zsjiekou'); clearMyVar('zsdatalist'); })); clearMyVar('SrcJy$back'); setPageTitle('接口独立展示'); var d = []; var cfgfile = "hiker://files/rules/Src/Juying/config.json"; var Juyingcfg=fetch(cfgfile); if(Juyingcfg != ""){ eval("var JYconfig=" + Juyingcfg+ ";"); }else{ var JYconfig= {}; } if(!storage0.getMyVar('zsjiekou')){ var filepath = "hiker://files/rules/Src/Juying/jiekou.json"; var datafile = fetch(filepath); if(datafile != ""){ eval("var datalist=" + datafile+ ";"); }else{ var datalist = []; } storage0.putMyVar('zsdatalist',datalist); if(JYconfig.zsjiekou){ var zslist = datalist.filter(item => { return item.name==JYconfig.zsjiekou.api_name; }) }else{ var zslist = []; } zslist = zslist.length>0?zslist:[{}]; storage0.putMyVar('zsjiekou',zslist[0]); } let zsjiekou = storage0.getMyVar('zsjiekou',{}); let api_name = zsjiekou.name||""; let api_type = zsjiekou.type||""; let api_url = zsjiekou.url||""; let api_ua = zsjiekou.ua||"MOBILE_UA"; api_ua = api_ua=="MOBILE_UA"?MOBILE_UA:api_ua=="PC_UA"?PC_UA:api_ua; let xunmitimeout = JYconfig.xunmitimeout||5; let selectgroup = JYconfig.zsjiekou?JYconfig.zsjiekou.selectgroup||"":""; if(api_name){setPageTitle(api_name);} if(api_name&&api_type&&api_url){ if (api_type=="v1") { let date = new Date(); let mm = date.getMonth()+1; let dd = date.getDate(); let key = (mm<10?"0"+mm:mm)+""+(dd<10?"0"+dd:dd); var url = api_url + '/detail?&key='+key+'&vod_id='; var typeurl = api_url + "/types"; var listurl = api_url + '?key='+key+'&page='; var lists = "html.data.list"; } else if (api_type=="app") { var url = api_url + 'video_detail?id='; var typeurl = api_url + "nav"; var listurl = api_url + 'video?tid=@type_id&pg='; var lists = "html.list"; } else if (api_type=="v2") { var url = api_url + 'video_detail?id='; var typeurl = api_url + "nav"; var listurl = api_url + 'video?tid=@type_id&pg='; var lists = "html.data"; } else if (api_type=="iptv") { var url = api_url + '?ac=detail&ids='; var typeurl = api_url + "?ac=flitter"; var listurl = api_url + '?ac=list&page='; var lists = "html.data"; } else if (api_type=="cms") { var url = api_url + '?ac=videolist&ids='; var typeurl = api_url + "?ac=list"; var listurl = api_url + '?ac=videolist&pg='; var lists = "html.list"; } else if (api_type=="XBPQ") { var jsondata = zsjiekou.data; if(jsondata&&jsondata.ext){ let apihtml = request(jsondata.ext, { headers: { 'User-Agent': api_ua }, timeout:xunmitimeout*1000 }); try{ eval("var jkdata = " + apihtml); }catch(e){ var jkdata = {}; } var url = jkdata["主页url"]; var typeurl = jkdata["分类"]; jkdata["分类url"] = /^http/.test(jkdata["分类url"])?jkdata["分类url"]:url + jkdata["分类url"]; var listurl = jkdata["分类url"].replace(/class\/\{class\}|\{class\}|year\/\{year\}|\{year\}|area\/\{area\}|\{area\}|by\/\{by\}|\{by\}|\{act\}/g,''); } } else { log('api类型错误') } } if(MY_PAGE==1){ let datalist = storage0.getMyVar('zsdatalist',[]); let grouplist = []; datalist.forEach(item=>{ let groupname = item.group||item.type; if(/app|v1|v2|iptv|cms|XBPQ/.test(item.type)&&grouplist.indexOf(groupname)==-1&&item.group!="失败待处理"){ grouplist.push(groupname); } }) datalist = datalist.filter(item => { if(selectgroup&&grouplist.indexOf(selectgroup)>-1){ return /app|v1|v2|iptv|cms|XBPQ/.test(item.type) && (item.group==selectgroup || !item.group&&item.type==selectgroup) && item.group!="失败待处理" }else{ return /app|v1|v2|iptv|cms|XBPQ/.test(item.type) && item.group!="失败待处理"; } }) for (let i = 0; i < 9; i++) { d.push({ col_type: "blank_block" }) } d.push({ title: selectgroup&&grouplist.indexOf(selectgroup)>-1?'👉'+selectgroup:'🆙选择分组', url: $(grouplist,2).select((cfgfile,JYconfig,selectgroup)=>{ if(selectgroup!=input){ JYconfig['zsjiekou'].selectgroup = input; writeFile(cfgfile, JSON.stringify(JYconfig)); refreshPage(true); } return "hiker://empty"; },cfgfile,JYconfig,selectgroup), col_type: "scroll_button" }); if(datalist.length>0){ for(let i in datalist){ if(api_url==datalist[i].url){ var Srczsjiekousousuodata = []; Srczsjiekousousuodata.push(datalist[i]); } let zsdata = {api_name:datalist[i].name}; if(selectgroup){ zsdata.selectgroup = selectgroup; } d.push({ title: api_url==datalist[i].url?'““””' + datalist[i].name + '':datalist[i].name, col_type: 'scroll_button', url: $('#noLoading#').lazyRule((zsjiekou,cfgfile,JYconfig,jkdata) => { clearMyVar('Srczsjiekou$type_id'); JYconfig['zsjiekou'] = zsjiekou; writeFile(cfgfile, JSON.stringify(JYconfig)); storage0.putMyVar('zsjiekou',jkdata); refreshPage(true); return "hiker://empty"; }, zsdata,cfgfile,JYconfig,datalist[i]) }); } d.push({ col_type: "blank_block" }); } if(typeof(typeurl) != "undefined"){ const Color = "#3399cc"; try{ if(api_type=="XBPQ"){ if(jkdata["分类"].indexOf('$')>-1){ let jktype = jkdata["分类"].split('#'); var typeclass = jktype.map((type)=>{ return { "type_id": type.split('$')[1], "type_pid": 0, "type_name": type.split('$')[0] } }) }else if(jkdata["分类"].indexOf('&')>-1&&jkdata["分类值"]){ let jktypename = jkdata["分类"].split('&'); let jktypeid = jkdata["分类值"].split('&'); var typeclass = []; for(let i in jktypeid){ typeclass.push({ "type_id": jktypeid[i], "type_pid": 0, "type_name": jktypename[i] }) } } }else{ let gethtml = request(typeurl, { headers: { 'User-Agent': api_ua }, timeout:xunmitimeout*1000 }); if (api_type=="v1") { let typehtml = JSON.parse(gethtml); let typelist = typehtml.data.list||typehtml.data.typelist; var typeclass = typelist.map((list)=>{ return { "type_id": list.type_id, "type_pid": list.type_pid, "type_name": list.type_name } }) } else if (/app|v2/.test(api_type)) { let typehtml = JSON.parse(gethtml); let typelist = typehtml.list||typehtml.data; var typeclass = typelist.map((list)=>{ return { "type_id": list.type_id, "type_pid": 0, "type_name": list.type_name } }) } else if (api_type=="iptv") { let type_dict = { comic: '动漫', movie: '电影', tvplay: '电视剧', tvshow: '综艺', movie_4k: '4k', hanguoju: '韩剧', oumeiju: '欧美剧', tiyu: '体育' }; let typehtml = JSON.parse(gethtml); var typeclass = typehtml.map((list)=>{ if(type_dict[list]){ return { "type_id": list, "type_pid": 0, "type_name": type_dict[list] } } }) typeclass = typeclass.filter(n => n); } else if (api_type=="cms") { if(/<\?xml/.test(gethtml)){ let typelist = pdfa(gethtml,'class&&ty'); var typeclass = typelist.map((list)=>{ return { "type_id": String(xpath(list,`//ty/@id`)).trim(), "type_pid": 0, "type_name": String(xpath(list,`//ty/text()`)).trim() } }) }else{ let typehtml = JSON.parse(gethtml); var typeclass = typehtml.class; } } else { log('api类型错误') } } }catch(e){ log(api_name+' 接口访问异常,请更换接口!获取分类失败>'+e.message); var typeclass = []; } if(typeclass&&typeclass.length>0){ let type_pids = []; let type_ids = []; for(let i in typeclass){ if(type_pids.indexOf(typeclass[i].type_pid)==-1){type_pids.push(typeclass[i].type_pid)} if(type_ids.indexOf(typeclass[i].type_id)==-1){type_ids.push(typeclass[i].type_id)} } if(type_pids.length > 0){ type_pids.sort((a, b) => { return a - b }) }; if(/v2|app|XBPQ/.test(api_type)&&!getMyVar('Srczsjiekou$type_id')){ putMyVar('Srczsjiekou$type_id',type_ids[0]); } for (var j in type_pids) { for (var i in typeclass) { if(typeclass[i].type_pid==type_pids[j]){ d.push({ title: getMyVar('Srczsjiekou$type_id')==typeclass[i].type_id?'““””' + typeclass[i].type_name + '':typeclass[i].type_name, url: $('#noLoading#').lazyRule((type_id) => { putMyVar('Srczsjiekou$type_id', type_id); refreshPage(true); return "hiker://empty"; }, typeclass[i].type_id), col_type: 'scroll_button' }); } } d.push({ col_type: "blank_block" }); } } var searchurl = $('').lazyRule((data) => { if(data){ return $('hiker://empty#noRecordHistory##noHistory#').rule((name,data) => { require(config.依赖.match(/http(s)?:\/\/.*\//)[0].replace('/Ju/','/master/') + 'SrcJyXunmi.js'); xunmi(name,data); }, input,data); }else{ return 'toast://未找到接口数据' } },Srczsjiekousousuodata); d.push({ title: "🔍", url: $.toString((searchurl) => { return input + searchurl; },searchurl), desc: "搜你想看的...", col_type: "input", extra: { titleVisible: true } }); } } if(typeof(listurl) != "undefined"){ try{ if(api_type=="XBPQ"){ MY_URL = listurl.replace('{catePg}',jkdata["起始页"]?MY_PAGE>jkdata["起始页"]?MY_PAGE:"":MY_PAGE).replace('{cateId}',getMyVar('Srczsjiekou$type_id','1')); }else{ MY_URL = listurl + MY_PAGE; if(api_type=="v2"||api_type=="app"){ MY_URL = MY_URL.replace('@type_id',getMyVar('Srczsjiekou$type_id','1')); }else if(getMyVar('Srczsjiekou$type_id')){ if (api_type=="v1") { MY_URL = MY_URL + '&type=' + getMyVar('Srczsjiekou$type_id'); } else if (api_type=="iptv") { MY_URL = MY_URL + '&class=' + getMyVar('Srczsjiekou$type_id'); } else { MY_URL = MY_URL + '&t=' + getMyVar('Srczsjiekou$type_id'); } } } try { var gethtml = request(MY_URL, { headers: { 'User-Agent': api_ua }, timeout:xunmitimeout*1000 }); if(api_type=="XBPQ"){ jkdata["二次截取"] = jkdata["二次截取"] || (gethtml.indexOf(`