Files
tvbox_collect/cpu_iy3/lib/Appfox.js
T
2026-06-29 03:41:14 +00:00

3 lines
8.4 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
//本资源来源于互联网公开渠道,仅可用于个人学习爬虫技术。
//严禁将其用于任何商业用途,下载后请于 24 小时内删除,搜索结果均来自源站,本人不承担任何责任。
let e={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",Connection:"Keep-Alive","Accept-Language":"zh-CN,zh;q=0.8","Cache-Control":"no-cache"},t=5e3,i=2,a=0,s=1,r={},l={},n={},o={},p=[],c="",f="",h="",d="",u="";async function g(l){let p=l.ext||"";if("string"==typeof p&&p.startsWith("http"))c=p;else if("object"==typeof p)try{c=p.host,d=p.key||"",u=p.sign||"",i=p.ver||2,h=(p.cms||"").replace(/\/$/,""),/^https?:\/\/.*\/vod/.test(h)&&(h+=h.includes("?")?"&":"?"),f=p.from||"",o=p.parse||{},a=p.custom_first||0,s=void 0!==p.category?p.category:1;let l=p.ua;l&&("string"==typeof l?e["User-Agent"]=l:"object"==typeof l&&(r={host:l.host,config:l.config,home:l.home,category:l.category,search:l.search,parse:l.parse,player:l.player})),t=1e3*(p.timeout||5)}catch(e){}if(!/^https?:\/\/[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(:\d+)?(\/)?$/.test(c)){let i=Object.assign({},e);r.host&&(i["User-Agent"]=r.host);let a=await req(c,{headers:i,timeout:t});try{let e=JSON.parse(a.content);e.apiDomain&&(c=e.apiDomain)}catch(e){let t=(a.content||"").trim();t.startsWith("http")&&(c=t)}}c=c.replace(/\/$/,"");let g=d&&u;if(3!==i||g)g&&(i=3);else{let e=O();r.config&&(e["User-Agent"]=r.config);let i=(await S(`${c}/api.php/Appfox/config`,{headers:e,timeout:t})).data||{};i.app_key&&i.app_sign&&(d=i.app_key,u=i.app_sign);let a=i.playerList||[],s=i.jiexiDataList||[];a.length>0&&(n={playerList:a,jiexiDataList:s})}}async function y(i){if(!c||0===s)return JSON.stringify({class:[]});let a=Object.assign({},e);r.home&&(a["User-Agent"]=r.home);let l=[],n={},o={class:l,filters:n};if(h&&2!==s){let e=h.replace(/&$/,"");e=e.replace(/&ac=videolist/g,"").replace(/ac=videolist&/g,"").replace(/ac=videolist/g,""),e=e.replace("ac=detail","ac=list");let i=await S(e,{headers:a,timeout:t});i&&i.class&&(l=i.class),o=await S(h.replace(/&$/,""),{headers:a,timeout:t})||{},o.class=l,2===s&&o.list&&o.list.forEach((e=>e.vod_id=`msearch:${e.vod_id}`))}else{let e=await S(`${c}/api.php/Appfox/init`,{headers:a,timeout:t});e&&e.data&&e.data.type_list&&e.data.type_list.forEach((e=>{let t=String(e.type_id);if(l.push({type_id:t,type_name:e.type_name}),i&&e.filter_type_list&&e.filter_type_list.length>0){let i=[];e.filter_type_list.forEach((e=>{let t=e.name;switch(e.name){case"class":t="类型";break;case"area":t="地区";break;case"lang":t="语言";break;case"year":t="年份";break;case"sort":t="排序"}let a=[],s="";e.list.forEach((e=>{e&&a.push({n:e,v:e})})),a.length>0&&(s="sort"===e.name&&e.list.includes("最新")?"最新":e.list.includes("全部")?"全部":a[0].v,i.push({key:e.name,name:t,init:s,value:a}))})),i.length>0&&(n[t]=i)}})),o.class=l,o.filters=n}return JSON.stringify(o)}async function m(){if(!c||0===s)return JSON.stringify({list:[]});if(h&&2!==s)return JSON.stringify({list:[]});let a=Object.assign({},e);(r.homeVideo||r.home)&&(a["User-Agent"]=r.homeVideo||r.home);let l="index";if(2===i||3===i){let e=await S(`${c}/api.php/appfox/nav`,{headers:a,timeout:t}),i="";if(e&&e.data)for(let t of e.data)if("object"==typeof t){i=t.navigationId;break}if(!i)return JSON.stringify({list:[]});l=`nav_video?id=${i}`}let n=await S(`${c}/api.php/Appfox/${l}`,{headers:a,timeout:t}),o=[];return n&&n.data&&n.data.forEach((e=>{e.banner&&o.push(...e.banner),e.categories&&e.categories.forEach((e=>{e.videos&&o.push(...e.videos)}))})),o.length>0&&2===s&&o.forEach((e=>e.vod_id=`msearch:${e.vod_id}`)),JSON.stringify({list:o})}async function $(i,a,l,n){if(!c)return JSON.stringify({list:[]});let o=Object.assign({},e);r.category&&(o["User-Agent"]=r.category);let p={list:[]};if(h&&2!==s)p=await S(`${h}pg=${a}&t=${i}`,{headers:o,timeout:t})||{list:[]};else{let e=n.class||"全部",s=n.area||"全部",r=n.lang||"全部",l=n.year||"全部",f=n.sort||"最新",h=`${c}/api.php/Appfox/vodList?type_id=${i}&class=${encodeURIComponent(e)}&area=${encodeURIComponent(s)}&lang=${encodeURIComponent(r)}&year=${encodeURIComponent(l)}&sort=${encodeURIComponent(f)}&page=${a}`,d=await S(h,{headers:o,timeout:t});d&&d.data&&d.data.recommend_list&&(p.list=d.data.recommend_list)}return 2===s&&p.list&&p.list.forEach((e=>e.vod_id=`msearch:${e.vod_id}`)),JSON.stringify({...p,page:parseInt(a)})}async function _(a,s,l=1){if(!c)return JSON.stringify({list:[]});let n=Object.assign({},e);r.search&&(n["User-Agent"]=r.search);let o={list:[]};if(h){let e=h.includes("?")?h.split("?")[0]+"?":h;o=await S(`${e}ac=detail&wd=${encodeURIComponent(a)}`,{headers:n,timeout:t})||{list:[]},p=o.list||[]}else{if(3===i){let e={ac:"detail",wd:a,pg:String(l)},i=O(JSON.stringify(e));r.search&&(i["User-Agent"]=r.search),o=b((await req(`${c}/api.php/appfoxs/vod`,{method:"post",data:e,headers:i,postType:"",timeout:t})).content)}else{let e=`${c}/api.php/Appfox/vod?ac=detail&wd=${encodeURIComponent(a)}`;f&&(e+=`&from=${f}`),o=await S(e,{headers:n,timeout:t})||{list:[]}}p=o.list||[]}return JSON.stringify(o)}async function v(a){let s=Object.assign({},e),o=r.detail||r.search;o&&(s["User-Agent"]=o);let f=p.find((e=>String(e.vod_id)===String(a)));if(!f)if(h){let e=h.includes("?")?h.split("?")[0]+"?":h,i=await S(`${e}ac=detail&ids=${a}`,{headers:s,timeout:t});i&&i.list&&i.list.length>0&&(f=i.list[0])}else if(3===i){let e={ac:"detail",ids:String(a)},i=O(JSON.stringify(e));o&&(i["User-Agent"]=o);let s=b((await req(`${c}/api.php/appfoxs/vod`,{method:"post",data:e,headers:i,postType:"",timeout:t})).content);s&&s.list&&(f=s.list[0])}else{let e=await S(`${c}/api.php/Appfox/vod?ac=detail&ids=${a}`,{headers:s,timeout:t});e&&e.list&&(f=e.list[0])}if(!f)return JSON.stringify({list:[]});let d=(f.vod_play_from||"").split("$$$"),u=(f.vod_play_url||"").split("$$$");try{let a=3===i?O():Object.assign({},e);if(r.config&&(a["User-Agent"]=r.config),!n||!n.playerList)if(3===i){let e=b((await req(`${c}/api.php/appfoxs/config`,{headers:a,timeout:t})).content);n={playerList:e?.data?.playerList||[],jiexiDataList:e?.data?.jiexiDataList||[]}}else{let e=await S(`${c}/api.php/Appfox/config`,{headers:a,timeout:t});n={playerList:e?.data?.playerList||[],jiexiDataList:e?.data?.jiexiDataList||[]}}let s=n.playerList||[],o=n.jiexiDataList||[],p={};s.forEach((e=>p[e.playerCode]=e));let h=[];for(let e=0;e<d.length;e++){let t=d[e];if(p[t]){let i=p[t];i.playerCode!==i.playerName&&(d[e]=`${i.playerName}(${t})`)}if(e<u.length){let i=u[e].split("#"),a=[];for(let e of i){let i=e.split("$");i.length>=2?a.push(i[0]+"$"+t+"@"+i[1]):a.push(e)}h.push(a.join("#"))}}f.vod_play_from=d.join("$$$"),f.vod_play_url=h.join("$$$"),l={},o.forEach((e=>{(e.url||"").startsWith("http")&&(l[e.playerCode]=e.url)}))}catch(e){}return JSON.stringify({list:[f]})}async function A(i,s,n){let p=s.indexOf("@"),c=p>-1?s.substring(0,p):"",f=p>-1?s.substring(p+1):s,h=0,d=0,u=0,g={...e};r.parse&&(g["User-Agent"]=r.parse);let y=r.player||"Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1",m=f,$=1===a?[o,l]:[l,o];for(let e of $){if(!u&&!/^https?:\/\/.*\.(m3u8|mp4|flv|mkv)/.test(m))for(let i in e){if(!i.includes(c))continue;let a=e[i];if(Array.isArray(a))for(let e of a){if(e.startsWith("parse:")){m=e.split("parse:")[1]+f,h=0,d=1,u=1;break}try{let i=await S(`${e}${f}`,{headers:g,timeout:t});if(i&&i.url&&i.url.startsWith("http")){m=i.url,u=1;break}}catch(e){}}else if("string"==typeof a){if(a.startsWith("parse:")){m=a.split("parse:")[1]+f,h=0,d=1,u=1;break}try{let e=await S(`${a}${f}`,{headers:g,timeout:t});if(e&&e.url&&e.url.startsWith("http")){m=e.url,u=1;break}}catch(e){}}if(u||d)break}if(u||d)break}return/^https?:\/\/.*\.(m3u8|mp4|flv|mkv)/.test(m)||1===u||(h=1),JSON.stringify({jx:h,parse:d,url:m,header:{"User-Agent":y}})}function b(e){if(!e)return{};try{return JSON.parse(e)}catch(t){try{return JSON.parse(function(e){try{let t=md5X(d).substring(0,16),i=t.split("").reverse().join("");return aesX("AES/CBC/PKCS7",!1,e,!0,t,i,!1)}catch(t){return e}}(e))}catch(t){return e}}}async function S(e,t={}){try{return b((await req(e,t)).content)}catch(e){return{}}}function O(t=""){let i=(new Date).getTime(),a=Math.floor(9e5*Math.random())+1e5,s=md5X(`${u}${d}${i}${a}${t}`);return{"User-Agent":e["User-Agent"],"x-security-auth":`${i}|${a}|${s}`,"content-type":"application/json; charset=utf-8"}}export function __jsEvalReturn(){return{init:g,home:y,homeVod:m,category:$,search:_,detail:v,play:A}}