Files
tvbox_collect/sky4726/瓜子H5.js
T
2026-06-29 03:41:14 +00:00

199 baris
6.3 KiB
JavaScript

/*
@header({
searchable: 2,
filterable: 1,
quickSearch: 0,
title: '瓜子H5',
lang: 'ds'
})
*/
// http://localhost:5757/api/瓜子H5?ac=list&t=1&pg=1
// http://localhost:5757/api/瓜子H5?ac=detail&ids=447
// http://localhost:5757/api/瓜子H5?wd=&pg=1
// http://localhost:5757/api/瓜子H5?play=&flag=瓜子H5
var rule = {
类型: '影视',
title: '瓜子H5',
desc: '瓜子H5纯js版本',
homeUrl:'https://api.zaqohu.com/H5',
url: '/api.php/getappapi.index/typeFilterVodList',
searchUrl: '/api.php/getappapi.index/searchList',
searchable: 2,
quickSearch: 0,
filterable: 1,
filter_url: '{{fl.class}}',
filter: '',
filter_def: {
'3': {class: ''},
'4': {class: ''},
'5': {class: ''},
'6': {class: ''},
},
headers: {
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1',
'Content-Type': 'application/json',
},
timeout: 5000,
play_parse: true,
class_parse: async () => {
let classes = [{
type_id: '3',
type_name: '电影',
}, {
type_id: '4',
type_name: '电视剧',
}, {
type_id: '5',
type_name: '动漫'
}, {
type_id: '6',
type_name: '综艺'
}];
let filters = {}
for (const it of classes) {
const params = encrypt(JSON.stringify({'pid':parseInt(it.type_id)}))
let data = JSON.stringify({
"params": params
});
let config = {
method: 'POST',
headers: {
'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 16_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.6 Mobile/15E148 Safari/604.1',
'Content-Type': 'application/json',
},
data: data
};
const html = JSON.parse((await req('https://api.zaqohu.com/H5/Index/CategoryList',config)).content)
const list = JSON.parse(decrypt(html.data)).list
let values = []
list.forEach((val)=>{
values.push({
'n':val.type.trim(),
'v':val.show_id===undefined?'':val.show_id
})
})
filters[it.type_id] = [{
"key":"class",
"name":"class",
"value":values
}]
}
return {
class: classes, filters,
}
},
预处理: async () => {
return []
},
推荐: async () => {
return []
},
一级: async function (tid, pg, filter, extend) {
let {MY_CATE, input} = this;
if (pg <= 0) pg = 1;
let html = ''
let list = ''
let videos = []
if(extend.class===''||extend.class===undefined){
const params = encrypt(JSON.stringify({"pid": Number(tid), "pageSize": 24, "page": pg}))
const data =JSON.stringify({
"params": params
});
html = JSON.parse((await req(`${rule.homeUrl}/Category/GetChoiceList`, {
method:'post',
headers: rule.headers,
data:data
})).content);
list = JSON.parse(decrypt(html.data)).list
list.forEach((it)=>{
videos.push({
vod_id: it.vod_id,
vod_name:it.c_name,
vod_pic:it.c_pic
})
})
}else {
const params = encrypt(JSON.stringify({ show_id: extend.class, show_pid: Number(tid), pageSize: 24, page: pg }))
const data =JSON.stringify({
"params": params
})
html = JSON.parse((await req(`${rule.homeUrl}/Category/GetModuleList`, {
method:'post',
headers: rule.headers,
data:data,
})).content);
list = JSON.parse(decrypt(html.data)).list
list.forEach((it)=>{
videos.push({
vod_id: it.vod_id,
vod_name:it.vod_name,
vod_pic:it.vod_pic
})
})
}
return videos
},
二级: async function (ids) {
let {input} = this;
log(input)
const vod_id = {"vod_id":ids[0],"pageSize":"10000","page":"1"}
const params = encrypt(JSON.stringify(vod_id))
const data = JSON.stringify({
"params":params
})
const html = JSON.parse((await req(`${rule.homeUrl}/Resource/GetOnePlayList`, {
headers:rule.headers,
method:'post',
body:data
})).content);;
const list = JSON.parse(decrypt(html.data)).urls
const urls = []
list.forEach((it)=>{
urls.push(it.name+"$"+it.url)
})
let vod = {
vod_id: ids[0],
}
let playFroms = [];
let playUrls = []
playFroms.push('由不知道倾情打造');
vod.vod_play_from = playFroms.join('$$$');
playUrls.push(urls.join('#'));
vod.vod_play_url = playUrls.join('$$$');
return vod
},
搜索: async function (wd, quick, pg) {
},
lazy: async function (flag, id, flags) {
let {getProxyUrl,input} = this;
return {parse:0,url:id}
},
proxy_rule:async function(params){
let {input} = this;
}
};
const key = CryptoJS.enc.Utf8.parse("181cc88340ae5b2b")
const iv = CryptoJS.enc.Utf8.parse("4423d1e2773476ce")
function encrypt(data) {
return CryptoJS.AES.encrypt(data, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}).ciphertext.toString(CryptoJS.enc.Hex)
}
function decrypt(data) {
const text = CryptoJS.enc.Hex.parse(data)
return CryptoJS.AES.decrypt({
ciphertext: text
}, key, {
iv: iv,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}).toString(CryptoJS.enc.Utf8)
}