// 本代码仅用于个人学习,请勿用于其他作用,下载后请24小时内删除,代码虽然是公开学习的,但请尊重作者,应留下说明 // 获取一级数据 function getYiData(jkdata) { let d = []; let api_name = jkdata.name||""; let api_type = jkdata.type||""; let api_url = jkdata.url||""; let api_ua = jkdata.ua||"MOBILE_UA"; api_ua = api_ua=="MOBILE_UA"?MOBILE_UA:api_ua=="PC_UA"?PC_UA:api_ua; let headers = { 'User-Agent': api_ua }; let vodurlhead,classurl,listurl,listnode,extdata; 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); vodurlhead = api_url + '/detail?&key='+key+'&vod_id='; classurl = api_url + "/types"; listurl = api_url + '?key='+key+'&page='; listnode = "html.data.list"; } else if (api_type=="app") { vodurlhead = api_url + 'video_detail?id='; classurl = api_url + "nav"; listurl = api_url + 'video?tid=@type_id&pg='; listnode = "html.list"; } else if (api_type=="v2") { vodurlhead = api_url + 'video_detail?id='; classurl = api_url + "nav"; listurl = api_url + 'video?tid=@type_id&pg='; listnode = "html.data"; } else if (api_type=="iptv") { vodurlhead = api_url + '?ac=detail&ids='; classurl = api_url + "?ac=flitter"; listurl = api_url + '?ac=list&page='; listnode = "html.data"; } else if (api_type=="cms") { vodurlhead = api_url + '?ac=videolist&ids='; classurl = api_url + "?ac=list"; listurl = api_url + '?ac=videolist&pg='; listnode = "html.list"; } else if (api_type=="XBPQ") { extdata = extDataCache(jkdata) if($.type(extdata)=='object'){ let host = extdata["主页url"] || ''; classurl = extdata["分类"]; extdata["分类url"] = extdata["分类url"]?extdata["分类url"].split(';;')[0].split('[')[0]:""; listurl = extdata["分类url"]?/^http/.test(extdata["分类url"])?extdata["分类url"]:host + extdata["分类url"]:""; vodurlhead = getHome(listurl); } } else if (api_type=="drpy") { eval(fetch(drpymuban).replace('export default {muban, getMubans};','')); eval(fetch(jkdata.url)); if(rule['模板']){ extdata = Object.assign(muban[rule['模板']], rule); }else{ extdata = rule; } if(extdata){ let host = extdata["host"] || ''; classurl = host; listurl = classurl + extdata["url"]; vodurlhead = getHome(listurl)+(extdata["detailUrl"]||""); } } else { log('api类型错误') } } let lists = []; //影片列表 let fold = getMyVar('SrcJu_dianbo$fold', "0");//是否展开小分类筛选 let cate_id = ''; let type_id = ''; let class_id = ''; let area_id = ''; let year_id = ''; let sort_id = ''; if(MY_PAGE==1){ if(classurl){ let 推荐 = []; let 分类 = []; let 类型 = []; let 剧情 = []; let 地区 = []; let 年份 = []; let 排序 = []; let 筛选 = 0; let cate_exclude = ['主页','求片/留言']; const Color = "#3399cc"; let classCache = storage0.getMyVar('SrcJu_dianbo$classCache'); if(classCache){ 推荐 = classCache.推荐; 分类 = classCache.分类; 类型 = classCache.类型; 剧情 = classCache.剧情; 地区 = classCache.地区; 年份 = classCache.年份; 排序 = classCache.排序; 筛选 = classCache.筛选; }else{ try{ if(api_type=="drpy"){ if(extdata["class_name"] && extdata["class_url"]){ let cnames = extdata["class_name"].split('&'); let curls = extdata["class_url"].split('&'); 分类 = cnames.map((it,i) => { return it+'$'+curls[i]; }); }else if(extdata["class_parse"]){ let cparses = extdata["class_parse"].split(';'); if(extdata["cate_exclude"]){ cate_exclude = cate_exclude.concat(extdata["cate_exclude"].split('|')); } headers = extdata["headers"] || headers; if(headers['User-Agent']){ headers['User-Agent'] = headers['User-Agent']=='PC_UA'?PC_UA:MOBILE_UA; } let chtml = request(extdata["host"], {headers:headers, timeout:5000}); let fls = _pdfa(chtml, cparses[0]); fls.forEach(it=>{ try{ let typename = _pdfh(it, cparses[1]); let typeurl = _pdfh(it, cparses[2]); if(cparses.length==4 && cparses[3]){ typeurl = typeurl.match(cparses[3])[1]; } if(cate_exclude.indexOf(typename)==-1){ 分类.push(typename+'$'+typeurl); } }catch(e){ //log(e.message); } }) } let ss = extdata["filter"]; if(ss){ 分类.forEach(it=>{ let id = it.split('$')[1]; let sss = ss[id] || []; sss.forEach(itit=>{ let itvalue = itit.value; let values = []; itvalue.forEach(value=>{ values.push(value.n+'$'+value.v) }) if(itit.key=='cateId' || itit.key=='类型'){ 类型.push(values.join('#')); }else if(itit.key=='class' || itit.key=='剧情'){ 剧情.push(values.join('#')); }else if(itit.key=='area' || itit.key=='地区'){ 地区.push(values.join('#')); }else if(itit.key=='year' || itit.key=='年份'){ 年份.push(values.join('#')); }else if(itit.key=='by' || itit.key=='排序'){ 排序.push(values.join('#')); } }) }) 筛选 = 1; } }else if(api_type=="XBPQ"){ if(extdata["分类"].indexOf('$')>-1){ 分类 = extdata["分类"].split('#'); let ss = extdata["筛选"]; if(ss){ 分类.forEach(it=>{ let id = it.split('$')[1]; let sss = ss[id] || []; sss.forEach(itit=>{ let itvalue = itit.value; let values = []; itvalue.forEach(value=>{ values.push(value.n+'$'+value.v) }) if(itit.key=='cateId' || itit.key=='class'){ 类型.push(values.join('#')); }else if(itit.key=='area'){ 地区.push(values.join('#')); }else if(itit.key=='year'){ 年份.push(values.join('#')); }else if(itit.key=='by'){ 排序.push(values.join('#')); } }) }) 筛选 = 1; } }else if(extdata["分类"].indexOf('&')>-1&&extdata["分类值"]){ let typenames = extdata["分类"].split('&'); let typeids = extdata["分类值"].split('&'); for(let i in typeids){ 分类.push(typenames[i]+'$'+typeids[i]); } } }else{ let gethtml = request(classurl, { headers: { 'User-Agent': api_ua }, timeout:5000 }); if (api_type=="v1") { let typehtml = JSON.parse(gethtml); let typelist = typehtml.data.list||typehtml.data.typelist; typelist.map((it)=>{ 分类.push(it.type_name+'$'+it.type_id); }) } else if (/app|v2/.test(api_type)) { let typehtml = JSON.parse(gethtml); let typelist = typehtml.list||typehtml.data; typelist.forEach(it=>{ 分类.push(it.type_name+'$'+it.type_id); }) } else if (api_type=="iptv") { let type_dict = { comic: '动漫', movie: '电影', tvplay: '电视剧', tvshow: '综艺', movie_4k: '4k', hanguoju: '韩剧', oumeiju: '欧美剧', tiyu: '体育' }; let typelist = JSON.parse(gethtml); typelist.forEach((it)=>{ if(type_dict[it]){ 分类.push(type_dict[it]+'$'+it); } }) } else if (api_type=="cms") { if(/<\?xml/.test(gethtml)){ let typelist = pdfa(gethtml,'class&&ty'); typelist.forEach((it)=>{ 分类.push(String(xpath(it,`//ty/text()`)).trim()+'$'+String(xpath(it,`//ty/@id`)).trim()); }) }else{ let typehtml = JSON.parse(gethtml); let typelist = typehtml.class; if(jkdata.categories){ for(var i=0;i{ if(it.type_pid==0){ 分类.push(it.type_name+'$'+it.type_id); let values = []; typelist.forEach((itit)=>{ if(itit.type_pid==it.type_id){ values.push(itit.type_name+'$'+itit.type_id); } }) 类型.push(values.join('#')); } }) } }else { log('api类型错误') } } }catch(e){ d.push({ title: '获取分类数据失败!', desc: '看一下日志具体信息', url: classurl + '#noHistory#', col_type: 'text_center_1' }); log(api_name+'>获取分类数据异常>'+e.message + " 错误行#" + e.lineNumber); } if(分类.length>0){ storage0.putMyVar('SrcJu_dianbo$classCache', {分类:分类,类型:类型,剧情:剧情,地区:地区,年份:年份,排序:排序,筛选:筛选,推荐:推荐}); } } if(分类.length>0){ try{ if(筛选){ d.push({ title: fold === '1' ? '““””' : '““””', url: $('#noLoading#').lazyRule((fold) => { putMyVar('SrcJu_dianbo$fold', fold === '1' ? '0' : '1'); clearMyVar('SrcJu_dianbo$类型'); clearMyVar('SrcJu_dianbo$剧情'); clearMyVar('SrcJu_dianbo$地区'); clearMyVar('SrcJu_dianbo$年份'); clearMyVar('SrcJu_dianbo$排序'); refreshPage(false); return "hiker://empty"; }, fold), col_type: 'scroll_button', }) } cate_id = getMyVar('SrcJu_dianbo$分类', 推荐.length>0?'tj':分类[0].split('$')[1]); putMyVar('SrcJu_dianbo$分类', cate_id); if(推荐.length>0){ if(cate_id == 'tj'){ lists = 推荐;//当前分类为推荐,取推荐列表 } d.push({ title: cate_id=='tj'?'““””' + '推荐' + '':'推荐', url: $('#noLoading#').lazyRule(() => { putMyVar('SrcJu_dianbo$分类', 'tj'); refreshPage(true); return "hiker://empty"; }), col_type: 'scroll_button' }); } let index = 0; //分类数组索引 分类.forEach((it,i)=>{ let itname = it.split('$')[0]; let itid = it.split('$')[1]; if(cate_id==itid){ index = i; } d.push({ title: cate_id==itid?'““””' + itname + '':itname, url: $('#noLoading#').lazyRule((itid) => { putMyVar('SrcJu_dianbo$分类', itid); clearMyVar('SrcJu_dianbo$类型'); clearMyVar('SrcJu_dianbo$剧情'); clearMyVar('SrcJu_dianbo$地区'); clearMyVar('SrcJu_dianbo$年份'); clearMyVar('SrcJu_dianbo$排序'); refreshPage(true); return "hiker://empty"; }, itid), col_type: 'scroll_button' }); }) d.push({ col_type: "blank_block" }); if(fold=='1' || api_type=='cms'){ if(类型.length>0 && 类型[index]){ type_id = getMyVar('SrcJu_dianbo$类型', 类型[index].split('#')[0].split('$')[1]); 类型[index].split('#').forEach(it=>{ let itname = it.split('$')[0]; let itid = it.split('$')[1]; d.push({ title: type_id==itid?'““””' + itname + '':itname, url: $('#noLoading#').lazyRule((itid) => { putMyVar('SrcJu_dianbo$类型', itid); refreshPage(true); return "hiker://empty"; }, itid), col_type: 'scroll_button' }); }) d.push({ col_type: "blank_block" }); } if(剧情.length>0 && 剧情[index]){ class_id = getMyVar('SrcJu_dianbo$剧情', 剧情[index].split('#')[0].split('$')[1]); 剧情[index].split('#').forEach(it=>{ let itname = it.split('$')[0]; let itid = it.split('$')[1]; d.push({ title: class_id==itid?'““””' + itname + '':itname, url: $('#noLoading#').lazyRule((itid) => { putMyVar('SrcJu_dianbo$剧情', itid); refreshPage(true); return "hiker://empty"; }, itid), col_type: 'scroll_button' }); }) d.push({ col_type: "blank_block" }); } if(地区.length>0 && 地区[index]){ area_id = getMyVar('SrcJu_dianbo$地区', 地区[index].split('#')[0].split('$')[1]); 地区[index].split('#').forEach(it=>{ let itname = it.split('$')[0]; let itid = it.split('$')[1]; d.push({ title: area_id==itid?'““””' + itname + '':itname, url: $('#noLoading#').lazyRule((itid) => { putMyVar('SrcJu_dianbo$地区', itid); refreshPage(true); return "hiker://empty"; }, itid), col_type: 'scroll_button' }); }) d.push({ col_type: "blank_block" }); } if(年份.length>0 && 年份[index]){ year_id = getMyVar('SrcJu_dianbo$年份', 年份[index].split('#')[0].split('$')[1]); 年份[index].split('#').forEach(it=>{ let itname = it.split('$')[0]; let itid = it.split('$')[1]; d.push({ title: year_id==itid?'““””' + itname + '':itname, url: $('#noLoading#').lazyRule((itid) => { putMyVar('SrcJu_dianbo$年份', itid); refreshPage(true); return "hiker://empty"; }, itid), col_type: 'scroll_button' }); }) d.push({ col_type: "blank_block" }); } if(排序.length>0 && 排序[index]){ sort_id = getMyVar('SrcJu_dianbo$排序', 排序[index].split('#')[0].split('$')[1]); 排序[index].split('#').forEach(it=>{ let itname = it.split('$')[0]; let itid = it.split('$')[1]; d.push({ title: sort_id==itid?'““””' + itname + '':itname, url: $('#noLoading#').lazyRule((itid) => { putMyVar('SrcJu_dianbo$排序', itid); refreshPage(true); return "hiker://empty"; }, itid), col_type: 'scroll_button' }); }) d.push({ col_type: "blank_block" }); } } let searchurl = $('').lazyRule((jkdata) => { if(jkdata){ /* return $('hiker://empty#noRecordHistory##noHistory#').rule((name,data) => { require(config.依赖.match(/http(s)?:\/\/.*\//)[0] + 'SrcJyData.js'); let ssdata = getSsData(name,data); setResult(ssdata); }, input, data); */ storage0.putMyVar('搜索临时搜索数据', jkdata); return 'hiker://search?s='+input+' '+'&rule='+MY_RULE.title; }else{ return 'toast://未找到接口数据' } },jkdata); d.push({ title: "搜索", url: $.toString((searchurl) => { return input + searchurl; },searchurl), desc: "搜你想看的...", col_type: "input", extra: { titleVisible: true } }); }catch(e){ d.push({ title: '生成分类数据失败!', desc: e.message, url: 'hiker://empty', col_type: 'text_center_1' }); log(api_name+'>生成分类数据异常>'+e.message + " 错误行#" + e.lineNumber); } } } } if(listurl && lists.length==0){ try{ if(api_type=="drpy"){ if(extdata['filter_url']){ let fl = {}; let filter_url = extdata['filter_url'].replace('{{fl.lang}}','').replace('{{fl.letter}}','').replace('{{fl.字母}}','').replace('{{fl.语言}}',''); filter_url = filter_url.replace('fl.类型',type_id?'type_id':'cate_id').replace('fl.地区','area_id').replace('fl.年份','year_id').replace('fl.剧情','class_id').replace('fl.排序','sort_id'); filter_url = filter_url.replace('fl.cateId', type_id?'type_id':'cate_id').replace('fl.area','area_id').replace('fl.year','year_id').replace('fl.class','class_id').replace('fl.by','sort_id'); filter_url = filter_url.replace(/ or /g, '||').replace(/{{/g, '${').replace(/}}/g, '}'); eval(`filter_url = \`${filter_url}\`;`); MY_URL = listurl.replace('fyfilter', filter_url); }else{ MY_URL = listurl; } MY_URL = MY_URL.replace('fyclass', cate_id).replace('fypage', MY_PAGE); }else if(api_type=="XBPQ"){ MY_URL = listurl.replace('/lang/{lang}',''); if(!type_id){ MY_URL = MY_URL.replace('/class/{class}',''); } if(!area_id){ MY_URL = MY_URL.replace('/area/{area}',''); } if(!year_id){ MY_URL = MY_URL.replace('/year/{year}',''); } if(!sort_id){ MY_URL = MY_URL.replace('/by/{by}',''); } MY_URL = MY_URL.replace('{catePg}',extdata["起始页"]?MY_PAGE>extdata["起始页"]?MY_PAGE:extdata["起始页"]:MY_PAGE).replace('{year}', year_id).replace('{area}', area_id).replace('{by}', sort_id).replace('{class}', type_id).replace('{cateId}', cate_id); }else{ MY_URL = listurl + MY_PAGE; if(api_type=="v2"||api_type=="app"){ MY_URL = MY_URL.replace('@type_id',type_id); }else if (api_type=="v1") { MY_URL = MY_URL + '&type=' + type_id; } else if (api_type=="iptv") { MY_URL = MY_URL + '&class=' + type_id; } else { MY_URL = MY_URL + '&t=' + type_id; } } if(api_type=="drpy"){ let id,name,pic,note; let yicode = extdata["一级"] || ""; let dws = yicode.split(';'); if(/^js:/.test(yicode)){ let cateObj = { url: extdata.url, 一级: extdata.一级, tid: cate_id, pg: MY_PAGE, filter: extdata.filter, extend: extdata.extend }; let HOST = extdata['host']; let input = MY_URL; cateObj.tid = cateObj.tid+''; if (cateObj.tid.endsWith('_clicklink')) { cateObj.tid = cateObj.tid.split('_')[0]; input = HOST + '/api/video/search?key=' + cateObj.tid + '&page=' + + MY_PAGE; } let dynamicCode = yicode.replace('js:','').replace('setResult(d);').trim(); function executeDynamicCode() { eval(dynamicCode) return d; } let vodlist = executeDynamicCode(); vodlist.forEach(it=>{ let vodUrl = /fyid/.test(vodurlhead)?vodurlhead.replace('fyid',it.url):vodurlhead+it.url; lists.push({"vod_id":vodUrl,"vod_name":it.title,"vod_remarks":it.desc||"","vod_pic":it.img||""}); }) }else if(/^json:/.test(dws[0])){ let gethtml = request(MY_URL, { headers: headers, timeout:5000 }); let json = dealJson(gethtml); let vodlist = getJsonValue(json, dws[0].replace('json:','')); vodlist.forEach(it=>{ name = getJsonValue(it, dws[1]); pic = getJsonValue(it, dws[2]); note = getJsonValue(it, dws[3]); id = getJsonValue(it, dws[4]); let vodUrl = /fyid/.test(vodurlhead)?vodurlhead.replace('fyid',id):vodurlhead+id; if(id&&name){ lists.push({"vod_id":vodUrl,"vod_name":name,"vod_remarks":note||"","vod_pic":pic||""}); } }) }else{ let gethtml = request(MY_URL, { headers: headers, timeout:5000 }); let vodlist = _pdfa(gethtml, dws[0]); vodlist.forEach(it=>{ if(dws[4]){ id = _pd(it, dws[4], MY_URL); } if(dws[1]){ name = _pdfh(it, dws[1]); } if(dws[2]){ pic = _pdfh(it, dws[2]); } if(dws[3]){ note = _pdfh(it, dws[3]); } if(id&&name){ lists.push({"vod_id":id,"vod_name":name,"vod_remarks":note||"","vod_pic":pic||""}); } }) } }else if(api_type=="XBPQ"){ let gethtml = request(MY_URL, { headers: headers, timeout:5000 }); extdata["二次截取"] = extdata["二次截取"] || (gethtml.indexOf(`