forked from dongg/tvbox
1
0
Fork 0
tvbox/5/0/lib/kkys_open.js

8 lines
6.8 KiB
JavaScript
Raw Normal View History

2024-02-12 02:15:21 +02:00
import{Crypto,dayjs,jinja2,_}from"assets://js/lib/cat.js";let key="kkys",url="https://api1.baibaipei.com:8899",device={},siteKey="",siteType=0;async function request(reqUrl,postData,agentSp,get){var ts=dayjs().valueOf().toString(),rand=randStr(32),sign=Crypto.MD5("abcdexxxdd2daklmn25129_"+ts+"_"+rand).toString().toLowerCase(),agentSp={"user-agent":agentSp||device.ua},sign=(reqUrl.includes("baibaipei")&&(agentSp["device-id"]=device.id,agentSp["push-token"]="",agentSp.sign=sign,agentSp.time=ts,agentSp.md5=rand,agentSp.version="2.1.3",agentSp["system-model"]=device.model,agentSp["system-brand"]=device.brand,agentSp["system-version"]=device.release),await req(reqUrl,{method:get?"get":"post",headers:agentSp,data:postData||{},postType:get?"":"form"}));return sign.content}async function init(cfg){siteKey=cfg.skey,siteType=cfg.stype;cfg=await local.get(key,"device");if(0<cfg.length)try{device=JSON.parse(cfg)}catch(error){}_.isEmpty(device)&&((device=randDevice()).id=randStr(33).toLowerCase(),device.ua="okhttp/4.1.0",await local.set(key,"device",JSON.stringify(device)))}async function home(filter){var classes=[],filterObj={};for(const type of JSON.parse(await request(url+"/api.php/Index/getTopVideoCategory")).data){var typeName=type.nav_name;if("推荐"!=typeName){var typeId=type.nav_type_id.toString();if(classes.push({type_id:typeId,type_name:typeName}),filter)try{var key,filterAll=[],filterData=JSON.parse(await request(url+"/api.php/Video/getFilterType",{type:typeId})).data;for(key of Object.keys(filterData)){var itemValues=filterData[key];"plot"===key&&(key="class");let typeExtendName="";switch(key){case"class":typeExtendName="类型";break;case"area":typeExtendName="地区";break;case"lang":typeExtendName="语言";break;case"year":typeExtendName="年代";break;case"sort":typeExtendName="排序"}if(0!==typeExtendName.length){var newTypeExtend={key:key,name:typeExtendName},newTypeExtendKV=[];for(let j=0;j<itemValues.length;j++){var name=itemValues[j],value="sort"===key?j+"":"全部"===name?"0":name;newTypeExtendKV.push({n:name,v:value})}newTypeExtend.init="sort"===key?"1":newTypeExtendKV[0].v,newTypeExtend.value=newTypeExtendKV,filterAll.push(newTypeExtend)}}_.isEmpty(filterAll)||(filterObj[typeId]=filterAll)}catch(e){console.log(e)}}}return JSON.stringify({class:classes,filters:filterObj})}async function homeVod(){var videos=[];for(const item of JSON.parse(await request(url+"/api.php/Index/getHomePage",{type:1,p:1})).data.video)if(0===item.title.styleType)for(const vObj of item.list)videos.push({vod_id:vObj.vod_id,vod_name:vObj.vod_name,vod_pic:vObj.vod_pic,vod_remarks:vObj.vod_remarks||vObj.vod_score||""});return JSON.stringify({list:videos})}async function category(tid,pg,filter,extend){0==pg&&(pg=1);var reqUrl=url+"/api.php/Video/getFilterVideoList",extend=JSON.parse(jinja2(`{
"type": "{{tid}}",
"p": "{{pg}}",
"area": "{{ext.area|default(0)}}",
"year": "{{ext.year|default(0)}}",
"sort": "{{ext.sort|default(0)}}",
"class": "{{ext.class|default(0)}}"
}`,{ext:extend,tid:tid,pg:pg})),tid=(console.log(extend),JSON.parse(await request(reqUrl,extend)).data),videos=[];for(const vod of tid.data)videos.push({vod_id:vod.vod_id,vod_name:vod.vod_name,vod_pic:vod.vod_pic,vod_remarks:vod.vod_remarks||vod.vod_score||""});return JSON.stringify({page:parseInt(tid.current_page),pagecount:parseInt(tid.last_page),limit:parseInt(tid.per_page),total:parseInt(tid.total),list:videos})}async function detail(id){var id=JSON.parse(await request(url+"/api.php/Video/getVideoInfo",{video_id:id})).data.video,vod={vod_id:id.vod_id,vod_name:id.vod_name,vod_pic:id.vod_pic,type_name:id.vod_class,vod_year:id.vod_year,vod_area:id.vod_area,vod_remarks:id.vod_remarks||"",vod_actor:id.vod_actor,vod_director:id.vod_director,vod_content:id.vod_content.trim()},playlist={};for(const item of id.vod_play){var from=item.playerForm;if("jp"!==from&&"xg"!==from){let urls=[];for(const u of item.url)urls.push(formatPlayUrl(vod.vod_name,u.title)+"$"+u.play_url);!playlist.hasOwnProperty(from)&&0<urls.length&&(playlist[from]=urls)}}parse=id.parse||[],vod.vod_play_from=_.keys(playlist).join("$$$");var vod_play_url=[];for(const urlist of _.values(playlist))vod_play_url.push(urlist.join("#"));return vod.vod_play_url=vod_play_url.join("$$$"),JSON.stringify({list:[vod]})}var parse=[];async function play(flag,id,flags){try{if((0<=id.indexOf("youku")||0<=id.indexOf("iqiyi")||0<=id.indexOf("v.qq.com")||0<=id.indexOf("pptv")||0<=id.indexOf("le.com")||0<=id.indexOf("1905.com")||0<=id.indexOf("mgtv"))&&0<parse.length)for(let index=0;index<parse.length;index++)try{var p=parse[index];let res=await req(p+id,{headers:{"user-agent":"okhttp/4.1.0"}});if((result=jsonParse(id,JSON.parse(res.content))).url)return result.parse=0,JSON.stringify(result)}catch(error){}if(0<=id.indexOf("jqq-")){var jqqHeader=await request(url+"/jqqheader.json",null,null,!0),jqqHeaders=JSON.parse(jqqHeader),ids=id.split("-"),jxJqq=await req("https://api.juquanquanapp.com/app/drama/detail?dramaId="+ids[1]+"&episodeSid="+ids[2]+"&quality=LD",{headers:jqqHeaders}),jqqInfo=JSON.parse(jxJqq.content);if(jqqInfo.data.playInfo.url)return JSON.stringify({parse:0,playUrl:"",url:jqqInfo.data.playInfo.url})}var result,res=await request(url+"/video.php",{url:id});return(result=jsonParse(id,JSON.parse(res).data)).url?(result.parse=0,JSON.stringify(result)):JSON.stringify({parse:0,playUrl:"",url:id})}catch(e){return console.log(e),JSON.stringify({parse:0,url:id})}}async function search(wd,quick){var videos=[];for(const vod of JSON.parse(await request(url+"/api.php/Search/getSearch",{key:wd,type_id:0,p:1})).data.data)videos.push({vod_id:vod.vod_id,vod_name:vod.vod_name,vod_pic:vod.vod_pic,vod_remarks:vod.vod_remarks||vod.vod_score||""});return JSON.stringify({list:videos})}const charStr="abacdefghjklmnopqrstuvwxyzABCDEFGHJKLMNOPQRSTUVWXYZ0123456789";function randStr(len,withNum){for(var _str="",containsNum=void 0===withNum||withNum,i=0;i<len;i++){var idx=_.random(0,containsNum?charStr.length-1:charStr.length-11);_str+=charStr[idx]}return _str}function randDevice(){return{brand:"Huawei",model:"HUAWEI Mate 20",release:"10",buildId:randStr(3,!1).toUpperCase()+_.random(11,99)+randStr(1,!1).toUpperCase()}}function formatPlayUrl(src,name){return name.trim().replaceAll(src,"").replace(/<|>|《|》/g,"").replace(/\$|#/g," ").trim()}function jsonParse(input,json){try{let url=json.url??"";if(!(url=url.startsWith("//")?"https:"+url:url).startsWith("http"))return{};let headers=json.headers||{};var ua=(json["user-agent"]||"").trim(),referer=(0<ua.length&&(headers["User-Agent"]=ua),(json.referer||"").trim());return 0<referer.length&&(headers.Referer=referer),_.keys(headers).forEach(hk=>{headers[hk]||delete headers[hk]}),{header:headers,url:url}}catch(error){console.log(error)}return{}}function __jsEvalReturn(){return{init:init,home:home,homeVod:homeVod,category:category,detail:detail,play:play,search:search}}export{__jsEvalReturn};