// 本代码仅用于个人学习,请勿用于其他作用,下载后请24小时内删除,代码虽然是公开学习的,但请尊重作者,应留下说明 // 获取一级数据 function getYiData(jkdata) { let fllists; let vodlists; let error ={}; 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; //分类变量 let fold = getMyVar('SrcJu_dianbo$fold', "0");//是否展开小分类筛选 let cate_id = getMyVar('SrcJu_dianbo$分类', ''); let type_id = ''; let fl = storage0.getMyVar('SrcJu_dianbo$flCache') || {}; //基础链接拼接 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 = "json.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 = "json.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 = "json.data"; } else if (api_type=="iptv") { vodurlhead = api_url + '?ac=detail&ids='; classurl = api_url + "?ac=flitter"; listurl = api_url + '?ac=list&page='; listnode = "json.data"; } else if (api_type=="cms") { vodurlhead = api_url + '?ac=videolist&ids='; classurl = api_url + "?ac=list"; listurl = api_url + '?ac=videolist&pg='; listnode = "json.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 { log(api_type+'>api类型错误'); } //一级第1页生成分类数据 if(MY_PAGE==1){ if(classurl){ MY_URL = classurl; let 推荐 = []; let 分类 = []; let 筛选; let cate_exclude = ['主页','求片/留言']; const Color = "#3399cc"; let classCache = storage0.getMyVar('SrcJu_dianbo$classCache'); if(classCache){ 推荐 = classCache.推荐; 分类 = classCache.分类; 筛选 = classCache.筛选; }else{ try{ if(api_type=="XBPQ"){ if(extdata["分类"].indexOf('$')>-1){ 分类 = extdata["分类"].split('#'); }else if(extdata["分类"].indexOf('&')>-1&&extdata["分类值"]){ let typenames = extdata["分类"].split('&'); let typeids = extdata["分类值"].split('&'); for(let i in typeids){ if(cate_exclude.indexOf(typenames[i])==-1){ 分类.push(typenames[i]+'$'+typeids[i]); } } } 筛选 = extdata["筛选"]; }else{ let gethtml = request(classurl, { headers: { 'User-Agent': api_ua }, timeout:8000 }); 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'); if(jkdata.categories){ for(var i=0;i{ 分类.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 value = []; typelist.forEach((itit)=>{ if(itit.type_pid==it.type_id){ value.push({n:itit.type_name,v:itit.type_id}); } }) if(value.length>0){ 筛选 = 筛选 || {}; 筛选[it.type_id] = [{"key":"cateId","name":it.type_name,"value":value}]; } } }) } } } }catch(e){ error.fl = 1; log(api_name+'>获取分类数据异常>'+e.message + " 错误行#" + e.lineNumber); } if(分类.length>0){ storage0.putMyVar('SrcJu_dianbo$classCache', {分类:分类,筛选:筛选,推荐:推荐}); } } if(分类.length>0){ fllists = []; try{ if(筛选 && api_type!='cms'){ fllists.push({ title: fold === '1' ? '““””' : '““””', url: $('#noLoading#').lazyRule((fold) => { putMyVar('SrcJu_dianbo$fold', fold === '1' ? '0' : '1'); clearMyVar('SrcJu_dianbo$flCache'); 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'){ vodlists = 推荐;//当前分类为推荐,取推荐列表 } fllists.push({ title: cate_id=='tj'?'““””' + '推荐' + '':'推荐', url: $('#noLoading#').lazyRule(() => { putMyVar('SrcJu_dianbo$分类', 'tj'); refreshPage(true); return "hiker://empty"; }), col_type: 'scroll_button' }); } 分类.forEach((it,i)=>{ let itname = it.split('$')[0]; let itid = it.split('$')[1]; fllists.push({ title: cate_id==itid?'““””' + itname + '':itname, url: $('#noLoading#').lazyRule((itid) => { putMyVar('SrcJu_dianbo$分类', itid); clearMyVar('SrcJu_dianbo$flCache'); refreshPage(true); return "hiker://empty"; }, itid), col_type: 'scroll_button' }); }) fllists.push({ col_type: "blank_block" }); if(筛选 && (fold=='1' || api_type=='cms')){ Object.entries(筛选).forEach(([key, value]) => { //console.log(`Key: ${key}, Value: ${value}`); if(key==cate_id){ value.forEach(it=>{ if(it.value.length>0){ fl[it.key] = fl[it.key] || it.value[0].v; it.value.forEach((itit)=>{ fllists.push({ title: fl[it.key]==itit.v?'““””' + itit.n + '':itit.n, url: $('#noLoading#').lazyRule((flkey,itid) => { let fl = storage0.getMyVar('SrcJu_dianbo$flCache') || {}; fl[flkey] = itid; storage0.putMyVar('SrcJu_dianbo$flCache', fl); refreshPage(true); return "hiker://empty"; }, it.key, itit.v), col_type: 'scroll_button' }); }) fllists.push({ col_type: "blank_block" }); } }) } }); } storage0.putMyVar('SrcJu_dianbo$flCache', fl); }catch(e){ error.fl = 1; log(api_name+'>生成分类数据异常>'+e.message + " 错误行#" + e.lineNumber); } } } } if(listurl && !vodlists){ try{ fl.cateId = fl.cateId || cate_id; //拼接生成分类页url链接 if(api_type=="XBPQ"){ fl.catePg = MY_PAGE; let execStrs = getExecStrs(listurl); execStrs.forEach(k=>{ if(!fl[k] ){ listurl = listurl.replace('/'+k+'/{'+k+'}',''); } }) listurl = listurl.replace('{catePg}',extdata["起始页"]?MY_PAGE>extdata["起始页"]?MY_PAGE:extdata["起始页"]:MY_PAGE).replace(/{/g, '${fl.').replace(/}/g, ' || ""}'); eval(`listurl = \`${listurl}\`;`); MY_URL = listurl; }else{ MY_URL = listurl + MY_PAGE; type_id = fl.cateId || ""; 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; } } vodlists = []; let vod_name,vod_pic,vod_url,vod_desc; if(api_type=="XBPQ"){ let gethtml = request(MY_URL, { headers: headers, timeout:8000 }); extdata["二次截取"] = extdata["二次截取"] || (gethtml.indexOf(`