From aab296fb738580cc7abbd9c8a9abdec606829bf6 Mon Sep 17 00:00:00 2001 From: src48597962 <48597962@qq.com> Date: Mon, 27 May 2024 11:59:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20'SrcJyData.js'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SrcJyData.js | 2121 +++++++++++++++++++++++++------------------------- 1 file changed, 1063 insertions(+), 1058 deletions(-) diff --git a/SrcJyData.js b/SrcJyData.js index d6615541..2bbbd29c 100644 --- a/SrcJyData.js +++ b/SrcJyData.js @@ -1,1143 +1,1148 @@ // 本代码仅用于个人学习,请勿用于其他作用,下载后请24小时内删除,代码虽然是公开学习的,但请尊重作者,应留下说明 -// 获取搜索数据 -function getSsData(name, jkdata) { - name = name.replace(/全集.*|国语.*|粤语.*/g,''); + +// 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 = []; 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 vodurlhead,ssurl,listnode; - 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='; - ssurl = api_url + '?ac=videolist&limit=10&wd='+name+'&key='+key; - listnode = "html.data.list"; - } else if (api_type=="app") { - vodurlhead = api_url + 'video_detail?id='; - ssurl = api_url + 'search?limit=10&text='+name; - listnode = "html.list"; - } else if (api_type=="v2") { - vodurlhead = api_url + 'video_detail?id='; - ssurl = api_url + 'search?limit=10&text='+name; - listnode = "html.data"; - } else if (api_type=="iptv") { - vodurlhead = api_url + '?ac=detail&ids='; - ssurl = api_url + '?ac=list&zm='+name+'&wd='+name; - listnode = "html.data"; - } else if (api_type=="cms") { - vodurlhead = api_url + '?ac=videolist&ids='; - ssurl = api_url + '?ac=videolist&wd='+name; - listnode = "html.list"; - } else if (api_type=="xpath"||api_type=="biubiu"||api_type=="XBPQ") { - var jsondata = obj.data; - } else { - log('api类型错误') - } - function getHtmlCode(ssurl,ua,timeout){ - let headers = { - "User-Agent": ua, - "Referer": ssurl - }; - let html = request(ssurl, { headers: headers, timeout:timeout }); - try{ - if (html.indexOf('检测中') != -1) { - html = request(ssurl + '&btwaf' + html.match(/btwaf(.*?)\"/)[1], {headers: headers, timeout: timeout}); - }else if (/页面已拦截/.test(html)) { - html = fetchCodeByWebView(ssurl, { headers: headers, 'blockRules': ['.png', '.jpg', '.gif', '.mp3', '.mp4'], timeout:timeout}); - html = pdfh(html,'body&&pre&&Text'); - }else if (/系统安全验证/.test(html)) { - log(api_name+'>'+ssurl+'>页面有验证码拦截'); - function ocr(codeurl,headers) { - headers= headers || {}; - let img = convertBase64Image(codeurl,headers).replace('data:image/jpeg;base64,',''); - let code = request('https://api.xhofe.top/ocr/b64/text', { body: img, method: 'POST', headers: {"Content-Type":"text/html"}}); - code = code.replace(/o/g, '0').replace(/u/g, '0').replace(/I/g, '1').replace(/l/g, '1').replace(/g/g, '9'); - log('识别验证码:'+code); - return code; - } - let www = ssurl.split('/'); - let home = www[0]+'//'+www[2]; - let codeurl = home+(ssurl.indexOf('search-pg-1-wd-')>-1?'/inc/common/code.php?a=search':'/index.php/verify/index.html?'); - let cook = fetchCookie(codeurl, {headers: headers}); - headers.Cookie = JSON.parse(cook||'[]').join(';'); - let vcode = ocr(codeurl,headers); - fetch(home+(ssurl.indexOf('search-pg-1-wd-')>-1?'/inc/ajax.php?ac=code_check&type=search&code=':html.match(/\/index.php.*?verify=/)[0]) + vcode, { - headers: headers, - method: ssurl.indexOf('search-pg-1-wd-')>-1?'GET':'POST' - }) - - html = fetch(ssurl, { headers: headers, timeout:timeout}); - } - }catch(e){} - return html; - } - let lists = []; - let gethtml = ""; - if(/v1|app|iptv|v2|cms/.test(api_type)){ - let json; - try { - gethtml = getHtmlCode(ssurl,api_ua,5000); - if(/cms/.test(api_type)){ - if(gethtml&&gethtml.indexOf(name)==-1){ - gethtml = getHtmlCode(ssurl.replace('videolist','list'),api_ua,5000); - } - if(/<\?xml/.test(gethtml)){ - gethtml = gethtml.replace(/<!\[CDATA\[|\]\]>|/g,''); - let xmllist = []; - let videos = pdfa(gethtml,'list&&video'); - for(let i in videos){ - let id = String(xpath(videos[i],`//video/id/text()`)).trim(); - let name = String(xpath(videos[i],`//video/name/text()`)).trim(); - let pic = String(xpath(videos[i],`//video/pic/text()`)).trim(); - let note = String(xpath(videos[i],`//video/note/text()`)).trim(); - xmllist.push({"vod_id":id,"vod_name":name,"vod_remarks":note,"vod_pic":pic}) - } - json = {"list":xmllist}; - }else{ - json = JSON.parse(gethtml); - } - }else if(!/{|}/.test(gethtml)&&gethtml!=""){ - let decfile = "hiker://files/rules/Src/Juying/appdec.js"; - let Juyingdec=fetch(decfile); - if(Juyingdec != ""){ - eval(Juyingdec); - json = JSON.parse(xgdec(gethtml)); - } - }else{ - json = JSON.parse(gethtml.replace(/)<[^<]*)*<\/script>/gi,'')); + 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") { + 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"]; } - } catch (e) { - json = { data: [] }; - if(gethtml){geterror = 1;} - //log(1);//log(obj.name+'>'+e.message); + } else { + log('api类型错误') } - try{ + } + let lists = []; //影片列表 + let fold = getMyVar('SrcJu_dianbo$fold', "0");//是否展开小分类筛选 + let cate_id = getMyVar('SrcJu_dianbo$cate_id', '1');//大分类id + let type_id = getMyVar('SrcJu_dianbo$type_id', '1');//小分类id + let 筛选 = 0;//是否有小分类 + if(MY_PAGE==1){ + if(classurl){ + let recommends = []; //推荐影片 + const Color = "#3399cc"; + let typeclass = []; try{ - lists = eval(listnode)||json.list||json.data.list||json.data||[]; - } catch (e) { - lists = json.list||json.data.list||json.data||[]; - } - - if(lists.length==0&&api_type=="iptv"){ - ssurl = ssurl.replace('&zm='+name,''); - json = JSON.parse(getHtmlCode(ssurl,api_ua,5000)); - lists = json.data||[]; - } - lists = lists.map(list=>{ - let vodname = list.vod_name||list.title; - if(vodname.indexOf(name)>-1){ - let vodpic = list.vod_pic||list.pic||""; - let voddesc = list.vod_remarks||list.state||""; - let vodurl = list.vod_id?vodurlhead + list.vod_id:list.nextlink; - let vodcontent = list.vod_blurb || ""; - return { - vodname: vodname, - vodpic: vodpic.indexOf('ver.txt')>-1?"":vodpic, - voddesc: voddesc, - vodurl: vodurl, - vodcontent: vodcontent - } - } - }) - } catch (e) { - //log(2);//log(obj.name+'>'+e.message); - } - }else if(api_type=="xpath"||api_type=="biubiu"){ - try { - if(api_type=="xpath"){ - var ssurl = jsondata.searchUrl.replace('{wd}',name); - if(jsondata.scVodNode=="json:list"){ - gethtml = getHtmlCode(ssurl,api_ua,5000); - let json = JSON.parse(gethtml); - lists = json.list||[]; - lists.forEach(item => { - if(jsondata.scVodId){ - item.id = item[jsondata.scVodId]; - } - }) - }else{ - let sstype = ssurl.indexOf(';post')>-1?"post":"get"; - if(sstype == "post"){ - let ssstr = ssurl.replace(';post','').split('?'); - let postcs = ssstr[ssstr.length-1]; - if(ssstr.length>2){ - ssstr.length = ssstr.length-1; + if(api_type=="XBPQ"){ + if(extdata["分类"].indexOf('$')>-1){ + let types = extdata["分类"].split('#'); + typeclass = types.map((type)=>{ + return { + "type_id": type.split('$')[1], + "type_pid": 0, + "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] + }) } - ssurl = ssstr.join('?'); - gethtml = request(ssurl, { headers: { 'User-Agent': api_ua }, timeout:5000, method: 'POST', body: postcs }); - }else{ - gethtml = getHtmlCode(ssurl,api_ua,5000); - } - let title = xpathArray(gethtml, jsondata.scVodNode+jsondata.scVodName); - let href = xpathArray(gethtml, jsondata.scVodNode+jsondata.scVodId); - let img = xpathArray(gethtml, jsondata.scVodNode+jsondata.scVodImg); - let mark = xpathArray(gethtml, jsondata.scVodNode+jsondata.scVodMark)||""; - for(let j in title){ - lists.push({"id":/^http/.test(href[j])||/\{vid}$/.test(jsondata.dtUrl)?href[j]:href[j].replace(/\/.*?\/|\.html/g,''),"name":title[j],"pic":img[j],"desc":mark[j]}) } - } - var ssvodurl = `jsondata.dtUrl.replace('{vid}', list.id)`; - }else{ - var ssurl = jsondata.url+jsondata.sousuoqian+name+jsondata.sousuohou; - if(jsondata.ssmoshi=="0"){ - gethtml = getHtmlCode(ssurl,api_ua,5000); - let html = JSON.parse(gethtml); - lists = html.list||[]; }else{ - let sstype = ssurl.indexOf(';post')>-1?"post":"get"; - if(sstype == "post"){ - /* - let ssstr = ssurl.replace(';post','').split('?'); - var postcs = ssstr[ssstr.length-1]; - if(ssstr.length>2){ - ssstr.length = ssstr.length-1; + 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]){ + 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;//分类列表 + recommends = typehtml.list;//推荐影片 } - var gethtml = request(ssurl, { headers: { 'User-Agent': api_ua }, timeout:5000, method: 'POST', body: postcs }); - */ - }else{ - gethtml = getHtmlCode(ssurl,api_ua,5000); - } - let sslist = gethtml.split(jsondata.jiequshuzuqian.replace(/\\/g,"")); - sslist.splice(0,1); - for (let i = 0; i < sslist.length; i++) { - sslist[i] = sslist[i].split(jsondata.jiequshuzuhou.replace(/\\/g,""))[0]; - let title = sslist[i].split(jsondata.biaotiqian.replace(/\\/g,""))[1].split(jsondata.biaotihou.replace(/\\/g,""))[0]; - let href = sslist[i].split(jsondata.lianjieqian.replace(/\\/g,""))[1].split(jsondata.lianjiehou.replace(/\\/g,""))[0].replace(jsondata.sousuohouzhui.replace(/\\/g,""),"");//.replace('.html','') - let img = sslist[i].split(jsondata.tupianqian.replace(/\\/g,""))[1].split(jsondata.tupianhou.replace(/\\/g,""))[0]; - let mark = ""; - lists.push({"id":href,"name":title,"pic":img,"desc":mark}) + + if(jkdata.categories){ + for(var i=0;i0){ + typeclass.splice(i,1); + i = i -1; + } + } + } + + }else { + log('api类型错误') } - if(jsondata.sousuohouzhui=="/vod/"){jsondata.sousuohouzhui = "/index.php/vod/detail/id/"} } - var ssvodurl = `jsondata.url+jsondata.sousuohouzhui+list.id`;//+'.html' + }catch(e){ + log(api_name+'>访问异常,请更换源接口!获取分类失败>'+e.message); } - lists = lists.map(list=>{ - let vodname = list.name; - let vodpic = list.pic||""; - let voddesc = list.desc||""; - let vodurl = eval(ssvodurl); - return { - vodname: vodname, - vodpic: vodpic, - voddesc: voddesc, - vodurl: vodurl - } + + + d.push({ + title: fold === '1' ? '““””' : '““””', + url: $('#noLoading#').lazyRule((fold) => { + putMyVar('SrcJu_dianbo$fold', fold === '1' ? '0' : '1'); + refreshPage(false); + return "hiker://empty"; + }, fold), + col_type: 'scroll_button', }) - } catch (e) { - //log(3);//log(obj.name+'>'+e.message); - } - }else if(api_type=="XBPQ"){ - try{ - let jkfile = fetchCache(jsondata.ext,72); - if(jkfile){ - eval("var jkdata = " + jkfile); - jkdata["搜索url"] = jkdata["搜索url"] || "/index.php/ajax/suggest?mid=1&wd={wd}&limit=500"; - var ssurl = jkdata["搜索url"].replace('{wd}',name).replace('{pg}','1'); - ssurl = /^http/.test(ssurl)?ssurl:jkdata["主页url"]+ssurl; - if(jkdata["搜索模式"]=="0"&&jkdata["搜索后缀"]){ - gethtml = getHtmlCode(ssurl,api_ua,5000); - let html = JSON.parse(gethtml); - lists = html.list||[]; - var ssvodurl = `jkdata["主页url"] + jkdata["搜索后缀"] + list.id + '.html'`; - }else{ - let sstype = ssurl.indexOf(';post')>-1?"post":"get"; - if(sstype == "post"){ - let postcs = ssurl.split(';')[2]; - ssurl = ssurl.split(';')[0]; - gethtml = request(ssurl, { headers: { 'User-Agent': api_ua }, timeout:5000, method: 'POST', body: postcs }); - }else{ - gethtml = getHtmlCode(ssurl,api_ua,5000); - } - let sslist = gethtml.match(new RegExp(jkdata["搜索数组"].replace('&&','((?:.|[\r\n])*?)'), 'g')); - for (let i = 0; i < sslist.length; i++) { - let title = sslist[i].split(jkdata["搜索标题"].split('&&')[0])[1].split(jkdata["搜索标题"].split('&&')[1])[0]; - let href = sslist[i].split(jkdata["搜索链接"].split('&&')[0])[1].split(jkdata["搜索链接"].split('&&')[1])[0]; - let img = sslist[i].split(jkdata["搜索图片"].split('&&')[0])[1].split(jkdata["搜索图片"].split('&&')[1])[0]; - let mark = sslist[i].split(jkdata["搜索副标题"].split('&&')[0])[1].split(jkdata["搜索副标题"].split('&&')[1])[0]; - lists.push({"id":/^http/.test(href)?href:jkdata["主页url"]+href,"name":title,"pic":img,"desc":mark}) - } - var ssvodurl = ""; + if(recommends.length>0){ + if(getMyVar('SrcJu_dianbo$cate_id','0')=='0'){ + lists = recommends;//当前分类为推荐,取推荐列表 } - lists = lists.map(list=>{ - let vodurl = ssvodurl?eval(ssvodurl):list.id; - return { - vodname: list.name, - vodpic: list.pic||"", - voddesc: list.desc||"", - vodurl: vodurl - } - }) - }else{ - lists = []; + d.push({ + title: getMyVar('SrcJu_dianbo$cate_id','0')=='0'?'““””' + '推荐' + '':'推荐', + url: $('#noLoading#').lazyRule(() => { + putMyVar('SrcJu_dianbo$cate_id', '0'); + refreshPage(true); + return "hiker://empty"; + }), + col_type: 'scroll_button' + }); } - }catch(e){ - log(e.message); - } - } - let searchs = []; - if(lists.length>0){ - try { - lists.forEach((list)=>{ - let vodpic = list.vodpic?list.vodpic.replace(/http.*\/tu\.php\?tu=|\/img\.php\?url=| |\/tu\.php\?tu=/g,''):"hiker://files/cache/src/picloading.gif"; - if(/^\/\//.test(vodpic)){ - vodpic = "https:" + vodpic; - } - if(/^\/upload|^upload/.test(vodpic)){ - vodpic = vodurl.match(/http(s)?:\/\/(.*?)\//)[0] + vodpic; + if(typeclass.length>0){ + let cates = typeclass.filter(it=>{ + return it.type_pid==0; + }) + let cate_id = getMyVar('SrcJu_dianbo$cate_id', recommends.length>0?'0':cates[0].type_id.toString()); + cates.forEach(it=>{ + d.push({ + title: cate_id==it.type_id?'““””' + it.type_name + '':it.type_name, + url: $('#noLoading#').lazyRule((cate_id) => { + putMyVar('SrcJu_dianbo$cate_id', cate_id); + refreshPage(true); + return "hiker://empty"; + }, it.type_id), + col_type: 'scroll_button' + }); + }) + d.push({ + col_type: "blank_block" + }); + let types = typeclass.filter(it=>{ + return it.type_pid == cate_id && it.type_pid != 0; + }) + type_id = getMyVar('SrcJu_dianbo$type_id', types[0].type_id.toString()); + if(fold=='1'){ + types.forEach(it=>{ + d.push({ + title: type_id==it.type_id?'““””' + it.type_name + '':it.type_name, + url: $('#noLoading#').lazyRule((type_id) => { + putMyVar('SrcJu_dianbo$type_id', type_id); + refreshPage(true); + return "hiker://empty"; + }, it.type_id), + col_type: 'scroll_button' + }); + }) + d.push({ + col_type: "blank_block" + }); } + - searchs.push({ - vodname: list.vodname, - voddesc: list.voddesc, - vodcontent: list.vodcontent, - vodpic: vodpic, - vodurl: list.vodurl + /* + let type_pids = []; + let type_ids = []; + typeclass.forEach(it=>{ + if(type_pids.indexOf(it.type_pid)==-1){type_pids.push(it.type_pid)} + if(type_ids.indexOf(it.type_id)==-1){type_ids.push(it.type_id)} }) - }); - } catch (e) { - log(jkdata.name + '输出结果报错>'+e.message); - } - } - return searchs; -} -// 获取二级数据 -function getErData(jkdata) { - let api_type = jkdata.type; - let api_ua = jkdata.ua||"MOBILE_UA"; - api_ua = api_ua=="MOBILE_UA"?MOBILE_UA:api_ua=="PC_UA"?PC_UA:api_ua; - let html,isxml; - if (/v1|app|v2|iptv|cms/.test(api_type)) { - try{ - let gethtml = request(MY_URL, {headers: {'User-Agent': api_ua}, timeout:5000}); - if(/cms/.test(api_type)&&/<\?xml/.test(gethtml)){ - html = gethtml; - isxml = 1; - }else{ - html = JSON.parse(gethtml.replace(/)<[^<]*)*<\/script>/gi,'')); - isxml = 0; + if(type_ids.length>0&&!getMyVar('SrcJu_dianbo$type_id')){///v2|app|XBPQ/.test(api_type) + putMyVar('SrcJu_dianbo$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('SrcJu_dianbo$type_id')==typeclass[i].type_id?'““””' + typeclass[i].type_name + '':typeclass[i].type_name, + url: $('#noLoading#').lazyRule((type_id) => { + putMyVar('SrcJu_dianbo$type_id', type_id); + refreshPage(true); + return "hiker://empty"; + }, typeclass[i].type_id), + col_type: 'scroll_button' + }); + } + } + d.push({ + col_type: "blank_block" + }); + } + */ } - } catch (e) { - } - } else if (/xpath|biubiu|XBPQ/.test(api_type)) { - try{ - html = request(MY_URL, {headers: {'User-Agent': api_ua}, timeout:5000}); - } catch (e) { - log(e.message); + var searchurl = $('').lazyRule((data) => { + if(data){ + /* + 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); + */ + return 'hiker://search?s='+input+'||'+data.url+'&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 + } + }); } } - let pic,details1,details2,desc,arts,conts; - - let actor = ""; - let director = ""; - let area = ""; - let year = ""; - let remarks = ""; - let pubdate = ""; - pic = MY_PARAMS.pic; - desc = '...'; - arts = []; - conts = []; - if(/cms/.test(api_type)&&isxml==1){ - html = html.replace(/<!\[CDATA\[|\]\]>|/g,''); - arts = xpathArray(html,`//video/dl/dt/@name`); - if(arts.length==0){ - arts = xpathArray(html,`//video/dl/dd/@flag`); - } - conts = xpathArray(html,`//video/dl/dd/text()`); - actor = String(xpath(html,`//video/actor/text()`)).trim().replace(/·/g,'·') || "未知"; - director = String(xpath(html,`//video/director/text()`)).trim().replace(/·/g,'·') || "未知"; - area = String(xpath(html,`//video/area/text()`)).trim(); - year = String(xpath(html,`//video/year/text()`)).trim(); - remarks = String(xpath(html,`//video/note/text()`)).trim() || ""; - pubdate = String(xpath(html,`//video/type/text()`)).trim() || ""; - pic = pic.indexOf('picloading.gif')==-1?pic:xpath(html,`//video/pic/text()`); - desc = String(xpath(html.replace('

','').replace('

',''),`//video/des/text()`)) || '...'; - }else if (/v1|app|v2|cms/.test(api_type)) { - let json; - if (/cms/.test(api_type)) { - try{ - json = html.list[0]; - }catch(e){ - json = html.data.list[0]; - } - if(json.vod_play_from&&json.vod_play_url){ - arts = json.vod_play_from.split('$$$'); - conts = json.vod_play_url.split('$$$'); - }else if(html.from&&html.play){ - arts = html.from; - for (let i = 0; i < html.play.length; i++) { - let cont = []; - let plays = html.play[i]; - for (let j = 0; j < plays.length; j++) { - cont.push(plays[j][0]+"$"+plays[j][1]) + if(listurl && lists.length==0){ + try{ + if(api_type=="XBPQ"){ + 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"){ + MY_URL = MY_URL.replace('@type_id',getMyVar('SrcJu_dianbo$type_id')); + }else if(getMyVar('SrcJu_dianbo$type_id')){ + if (api_type=="v1") { + MY_URL = MY_URL + '&type=' + getMyVar('SrcJu_dianbo$type_id'); + } else if (api_type=="iptv") { + MY_URL = MY_URL + '&class=' + getMyVar('SrcJu_dianbo$type_id'); + } else { + MY_URL = MY_URL + '&t=' + getMyVar('SrcJu_dianbo$type_id'); } - conts.push(cont.join("#")) } } - }else{ - if($.type(html.data)=="array"){ - json = html.data[0]; + + let gethtml = request(MY_URL, { headers: { 'User-Agent': api_ua }, timeout:5000 }); + if(api_type=="XBPQ"){ + jkdata["二次截取"] = jkdata["二次截取"] || (gethtml.indexOf(`