diff --git a/SrcJuying.js b/SrcJuying.js index ecf82548..8f9efd4c 100644 --- a/SrcJuying.js +++ b/SrcJuying.js @@ -1,507 +1,13 @@ //本代码仅用于个人学习,请勿用于其他作用,下载后请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]), - extra: { - longClick: [{ - title: "删除接口", - js: $.toString((dataurl,filepath) => { - let datalist = storage0.getMyVar('zsdatalist',[]); - for(var i=0;i-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(`