diff --git a/SrcJyData.js b/SrcJyData.js index ae6c27f9..f2de67f5 100644 --- a/SrcJyData.js +++ b/SrcJyData.js @@ -705,6 +705,18 @@ function getErData(jkdata) { "parse_api": parse_api }; } +// extData缓存 +function extDataCache(jkdata) { + if(jkdata.ext && /^http/.test(jkdata.ext) && /^hiker/.test(jkdata.url)){ + if (!fileExist(jkdata.url)) { + let content = fetch(extfile, {timeout:2000}); + if (content) { + writeFile(jkdata.url, content); + } + } + } + return fetch(jkdata.url); +} // 获取一级数据 function getYiData(jkdata) { let d = []; @@ -714,7 +726,7 @@ function getYiData(jkdata) { let api_ua = jkdata.ua||"MOBILE_UA"; api_ua = api_ua=="MOBILE_UA"?MOBILE_UA:api_ua=="PC_UA"?PC_UA:api_ua; - let vodurlhead,classurl,listurl,listnode; + let vodurlhead,classurl,listurl,listnode,extdata; if(api_name&&api_type&&api_url){ if (api_type=="v1") { let date = new Date(); @@ -745,6 +757,14 @@ function getYiData(jkdata) { classurl = api_url + "?ac=list"; listurl = api_url + '?ac=videolist&pg='; listnode = "html.list"; + } else if (api_type=="XBPQ") { + let cacheData = extDataCache(jkdata) + if(cacheData){ + eval("extdata = " + cacheData); + let host = extdata["主页url"]; + classurl = extdata["分类"]; + listurl = /^http/.test(extdata["分类url"])?extdata["分类url"]:host + extdata["分类url"]; + } } else { log('api类型错误') } @@ -754,75 +774,97 @@ function getYiData(jkdata) { const Color = "#3399cc"; let typeclass = []; try{ - - 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; - 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; - 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); - typeclass = typehtml.map((list)=>{ - if(type_dict[list]){ + if(api_type=="XBPQ"){ + if(extdata["分类"].indexOf('$')>-1){ + let types = extdata["分类"].split('#'); + typeclass = types.map((type)=>{ return { - "type_id": list, + "type_id": type.split('$')[1], "type_pid": 0, - "type_name": type_dict[list] + "type_name": type.split('$')[0] } + }) + }else if(extdata["分类"].indexOf('&')>-1&&extdata["分类值"]){ + let typenames = extdata["分类"].split('&'); + let typeids = extdata["分类值"].split('&'); + for(let i in typeids){ + typeclass.push({ + "type_id": typeids[i], + "type_pid": 0, + "type_name": typenames[i] + }) } - }) - typeclass = typeclass.filter(n => n); - } else if (api_type=="cms") { - if(/<\?xml/.test(gethtml)){ - let typelist = pdfa(gethtml,'class&&ty'); + } + }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; typeclass = typelist.map((list)=>{ return { - "type_id": String(xpath(list,`//ty/@id`)).trim(), + "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; + typeclass = typelist.map((list)=>{ + return { + "type_id": list.type_id, "type_pid": 0, - "type_name": String(xpath(list,`//ty/text()`)).trim() + "type_name": list.type_name } }) - }else{ + } else if (api_type=="iptv") { + let type_dict = { + comic: '动漫', + movie: '电影', + tvplay: '电视剧', + tvshow: '综艺', + movie_4k: '4k', + hanguoju: '韩剧', + oumeiju: '欧美剧', + tiyu: '体育' + }; let typehtml = JSON.parse(gethtml); - typeclass = typehtml.class; - } - if(jkdata.categories){ - for(var i=0;i{ + 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'); + 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); + typeclass = typehtml.class; + } + if(jkdata.categories){ + for(var i=0;i'+e.message); } @@ -895,7 +937,7 @@ function getYiData(jkdata) { let lists = []; try{ if(api_type=="XBPQ"){ - MY_URL = listurl.replace('{catePg}',jkdata["起始页"]?MY_PAGE>jkdata["起始页"]?MY_PAGE:"":MY_PAGE).replace('{cateId}',getMyVar('SrcJu_dianbo$type_id','1')); + MY_URL = listurl.replace('{catePg}',extdata["起始页"]?MY_PAGE>extdata["起始页"]?MY_PAGE:"":MY_PAGE).replace('{cateId}',getMyVar('SrcJu_dianbo$type_id','1')); }else{ MY_URL = listurl + MY_PAGE; if(api_type=="v2"||api_type=="app"){