mirror of
https://github.com/qist/tvbox.git
synced 2026-11-04 02:33:26 +00:00
update UG
This commit is contained in:
1 parent
b0e4a0ba34
commit
00dbd9c959
13 files changed
+20
-380
No files matched your search
@@ -12,6 +12,7 @@
|
||||
{"key":"tutu_open","name":"影视 | 图图","type":3,"api":"assets://js/tutu_open.js"},
|
||||
{"key":"jojo_open","name":"影视 | jojo","type":3,"api":"assets://js/jojo_open.js"},
|
||||
{"key":"jiohub","name":"影视 | jiohub","type":3,"api":"assets://js/jiohub.js"},
|
||||
{"key":"dsxys_open","name":"影视 | 大师兄","type":3,"api":"assets://js/dsxys_open.js"},
|
||||
{"key":"kunyu77_yz","name":"影视 | 七七","type":3,"api":"assets://js/kunyu77.js"},
|
||||
{"key":"czzy","name":"影视 | 厂长","type":3,"api":"assets://js/czzy_open.js"},
|
||||
{"key":"libvio","name":"影视 | libvio","type":3,"api":"assets://js/libvio_open.js"},
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
//bbQ0FUT1DUBBpkc3h5c19vcGVuLmpzLGFzc2V0czovL2pzL2xpYi9jYXQuanMcX19qc0V2YWxSZXR1cm4MQ3J5cHRvBlVyaQJfCmRheWpzDl8weDI5ODUOXzB4MTlmNgZrZXkGdXJsDGRldmljZQ5zaXRlS2V5EHNpdGVUeXBlDl8weDIzMjQOXzB4MzRmMw5wa2dOYW1lEmJ1aWxkVGltZQ52ZXJzaW9uFHZlcnNpb25OdW0Sc2lnbmF0dXJlBHVhBHBrBnByawJhDnJlcXVlc3QIaW5pdBJ1cmxBcHBlbmQeZGVjcnlwdFJlc3BvbnNlCGhvbWUOaG9tZVZvZBBjYXRlZ29yeQxwcmVmZXIMZGV0YWlsGHBsYXllckNvbmZpZwhwbGF5DHNlYXJjaBJtM3U4Q2FjaGUaZm9ybWF0UGxheVVybBxmb3JtYXRQbGF5VXJsMgxmaXhVcmwSanNvblBhcnNlDmNoYXJTdHIOcmFuZFN0chRyYW5kRGV2aWNlGGJhc2U2NEVuY29kZRhiYXNlNjREZWNvZGUKbGltaXQWdHlwZV9leHRlbmQwd3E4Nnc3M0NtTU9wSGNPZXc2SEN1eXc9DGVObVlkVQhwdXNoCHNrZXkIJnBnPRZ2b2RfcmVtYXJrczZwYXJzZV9hZnRlcl9jb25maWdfZmVhdHVyZXMaL3NlYXJjaD90ZXh0PQhjZWlsCHRpbWUKc2xpY2UKc2NvcmUIZGF0YQhieE1BSFA4TzZjUnhid283RHJBOU9MSHNLd3JQRHZzT1l3NDdDZ0JBdQhhdG9iGHZvZF9kaXJlY3RvcgxTUWpldFEWdG9VcHBlckNhc2UMJnBraWQ9EHZvZF9uYW1lBmxvZyBaM3cxQk1LWUtnTmF3Nlk9cHc3YkNpbEZCd3JIRHEwckNnY09CY01PM2RjT2hiUTdEckh2Q3ZYSTFjQnRMRGNLQ3dwTVd3clJxBjB4NBJ0eXBlX25hbWUIbGlzdB5leHRyYV9wYXJzZV9hcGkQTm53OUFjT08UY2hhckNvZGVBdBRyZXBsYWNlQWxsDGFyelVuSxh3NzdEdnNPOXdxOVYOJnRva2VuPQ5hbmRyb2lkHEhVQVdFSSBNYXRlIDQwCEhnTTMOcmVwbGFjZdgVdzVIRHQ4T1lHd2RFdzdBL3dyUjdjTUtKdzRmRGdNT0xFQ2Rqd3F6Q2dzS2N3NzR4dzU5ZERzS0lWY09wYmtMQ284S2x3ci9EbE1LUFVWUENzc09NdzVURGdNS2p3cS9DaHdQQ2xjTzBFY09vdzZQRHVNT2x3N3ZDdXcxWXc3eFhROEtQdzdkcXdwSENvY09pdzQ4NXc3dHRid0UvdzdiRGdzS3B3NnRoZHNPcnc3MXFmM2ZDbnNPVUpndEl3ckxEakY3Q25pc3B3b29rdzRGT1F6L0N1c09WUURaandyL0RtU0U4SUFmQ3FtNEx3NUxDaUFGZUNjT3R3NC9EbnNPdkl4UlJ3cEhDcHNPQVlXZkRoY0tadzRnMEhNT2RYc09md3JJaU1TWXV3N29QQXNLWnc1eFd3cEk0WDNrYXdxbFJ3clhDb2cxOFVNS1ZlalREdFJQQ2tSYkRzOEtJTU1PcHc1YkRzOEtxWGNPSndvbEN3NDFPYU1PbmZSM0RnOEtRdzZQQ2pNS2FZTU9RdzY0UHc3RkR3NkxEblhjYXdvakRyOEtYSWhSVnc3NE13NTNDbHNLa3c1UVZ3b1BEb3NLd0pjS0xRbkxEbzhPeXdvdkN2c0tpdzdacVZNS013cFhDanhFeHc2d2RYc0s2dzZFK2E4T0p3NWpEZ1hSK3c3ekNwRUFBdzRSN1M4TzJkY0tBU1dqRGg4T3N3NW5Dc3NLRmNjS1BWc09EYjAvRHAxN0NsTU9YdzdiQ3VjTzV3bzUydzV0ZXdwM0RwRjhoRFIzRHUzbkNqOE9Ud3BBZUpHcFF3cW5Dc3pQQ2djT2N3b0pUd3JJZndwRUl3cjVJdzdERGpjT2d3NXhFQlRGL3c1OXR3cWpDZ01PMExNS2l3N1REbDhLZVZjS2p3b0hDaThPc3dyM0RpY080RGlwNHdvRjVQTU9PdzRURHBNS213NkVxdzRIRGlUd3hmVnhDZVdyRHJVSERvTU9Td292Q2hjT0VRY0tDT01PcHdxaDhNOE9WdzZjY2R3ODdWd1F5R1VUQ2dFZkR1TU80S0ZzcXc1WERtQTF4dzQ3RGdjS01GVVREcnNPVHdyUjhCRXRJZE1PMXdvZFB3cmNhd29UQ2pzT1Ric0tld3JYQ3F4dkNnc0tqdzZKL1E4T0VXRmpDdHNLeExjT1h3cjNEdlhkUXdvcEVmVGN6Q1Q3Q2hsdkN2c08xWTBMQ2tNS2J3NTk4QTBackhHTEN1Y09BSGNLQmFTNDV3NFhDaXpmRGs4SzF3cG5EakVmQ2xzTzl3clREdnNPenc1L0RyQnBid3BUQ25zSzlCalJtZnlOTE9SRWp3NFVxSThPQndyNVdWaTBCd285b1dYdFdOc09OQXNLQndwc0F3clBEcFJiQ3J5OTZ3NTh1dzdiRHFrZkRyWDF2ZDNkQkpXQTVOR2xSYWdURGs4S1hBc0tIdzZ6Q3BzS3lTTU9idzdyRHNNT1pNV1p0d3B3VndwckNsc0tZUThLRHc1ekRua2RLWmNLbXdxdkN0eHZEcTAzQ2xnSENuMU5xd29JSnc3M0R2UnZDdXgvRGdjS25kc09ZU3pQQ2dSbDl3cUlMdzZuQ3VHb2NOOE91d3J6RHF3ZkNvRnpEZzJFdXc2QTlQSGtQdzZ2RHQ4S1lBOEtBZnpndnc1WEN1OE9vZWxqQ3BpYkN0TUtvdzVIQ29zT1V3cEhEaVZMRGtRb0F3NkFxTk1LQXdyQkhmTUtUd29GWlhNTy93cEF1TXdERHVzT0R3NG5Edk1PY01NS3F3cWtsWk1La3c0QUZ3NmZDdkg4Y3dydDNZOEtrd3FqRG5EQnR3clRDa2xsZ05zS1QkL3ZpZGVvX3ByZWZlcj90aWQ9Fi9uYXY/dG9rZW49DmluZGV4T2YIbGFuZwh3NzFmBjB4MAYweDEMdmFSTWNFCGwwJGgcQ29udGVudC1MZW5ndGgSc3Vic3RyaW5nCnN0eXBlemFiYWNkZWZnaGprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODkGMHg2CnBhcnNlBjB4MgZlbmMIYXJlYTRwYXJzZV9hZnRlcl9jb25maWdfaGVhZGVycwg2ajlZGHZvZF9wbGF5X3VybDB3N2ZDalFGUUg4S29Fc0tuWTFaVnc2UWoIZTBoRQ5jb25zb2xlCHBsb3QMY2hhckF0FFVzZXItQWdlbnQMQmFzZTY0CGNvZGUIa2V5cw5pc0VtcHR5EHZvZF95ZWFyDmNvbnRlbnQScGFnZWNvdW50JnJldHVybiAoZnVuY3Rpb24oKSAMdm9kX2lkEnBhcnNlX2FwaRJzdHJpbmdpZnkQaW5jbHVkZXMITilubBJ2b2RfY2xhc3MIaGl0cyIvdmlkZW9fZGV0YWlsP2lkPQY6Ly8MaHVhd2VpHGhhc093blByb3BlcnR5GHc3WENsUXRKRkE9PQ52b2RfcGljBjs7OxB2b2RfaW5mbzpwYXJzZV9hZnRlcl9jb25maWdfdXNlcl9hZ2VudAoubTN1OAh0cmltDHhJVVlacgpkc3h5cwhVdGY4CGh0dHAUc3RhcnRzV2l0aAxxakRtRXPoKndvZkNrY0tXT2tEQ2tpYkRuOEtOTGlyRGgyVWJ3cTR5dzdWNEE4S2N3cFFlVWNLZnc0TERweVhEckRnVFNjT1FmaXZEbWtqQ3ZFa3pKTU9jd3AxMllXSVhGc0tOV3dqRHZjT0NNOEtoUWNPZEpNS3dMc0s5VFJGN1gwTEN2RTdEck1Ld3c3dkNpRHpEc1hBcXdxQUJ3cmJEdkF6Q25jS1Z3cGZEdTBWTGNsekRtQ2pDcjhLZVFrc3R3N2pEbU1LbXc2Y3V3NTdDb2NLMHdxM0N1M25DdDNZVHdwRVh3N25Dc3NLYndxd1B3NlhEdkNWM3dxRENqTU9ud29MRGx5L0Ruc09Gd3IwSXdwQVVESFZVd3E4T1E4S2tjOEtIdzRMRHNoWk5GY08wQUZrQ0JzS29LRG5Db3NPdUs4T3RhOE9ydzZNMHdvekRvY0tEWGNPNklnaCtWc0tBZHNLSnc3Vmd3N0Urd3F6RG9NS213cnZDcnlYQ2pjT1lIOE92Q3NPMWYya0dmY09Ed292Q3RoOUhjaXZDZ2NLSFZjS3h3cGRRdzRWTlM4T1NGOE9UdzdyQ2t6N0NnY0t5dzVWZXdyUkVBc0t6SHo3Q3NpdkR1MWZEb2NPSGVzS2tTY09wd3FsOHc3SERqc08vdzRuQ3VUY3V3NzdEb0UzRG1NTzBCTU9KdzRyQ2xYTUt3cUZFTmhYRG5oakRrRjUxUGgzRHZjTzdPbFREcThLa004S3lmY0s5R2cvQ3RBbGp3cDdEbHpsUVhqQWxEc0tjUGg3Q3RzS2FWSE41dzdRbXc0OWV3b2ZEajhLZk8yWENsOEtQdzRIQ2k4TzhRY0tyd3BiRGwzZkRoTUs2dzRMRGdjTy9BOEtkdzRiRHRuWERwMDNDaDBiQ2huZDl3cEJ1d3E5U3c2UTJ3NW5EcmNLN1NSNDN3b25EaFVyQ244S1p3N0FPWXNLcVI4S2taeVBEbDhLbGZNS3d3ci9DdVFURHE4S2l3cWdZRzhLM0tNS0lIUnZEa01LUktnREN1M1FFWm1yQ21zS3R3cEZvd3IvQ2hzT2x3clZhdzVJQXc0cHB3cXQ5ZnlQQ3ZBNEt3NkREbTE5L3dvTlNKUnRZZDhPdlJNS1h3NXZEbDI3RHNqUENyc0tPWmlocFljS013ckxDcjhPWVRzS3BaTU9kZmlmQ3U4S2F3cXdHQ3pjY0JCSjd3NHB4d3B0bFpzSzF
Line truncated
|
||||
+1
-364
@@ -1,364 +1 @@
|
||||
import { Crypto, dayjs, jinja2, _ } from './lib/cat.js';
|
||||
|
||||
let key = 'kkys';
|
||||
let url = 'https://api1.baibaipei.com:8899';
|
||||
let device = {};
|
||||
let siteKey = '';
|
||||
let siteType = 0;
|
||||
|
||||
async function request(reqUrl, postData, agentSp, get) {
|
||||
let ts = dayjs().valueOf().toString();
|
||||
let rand = randStr(32);
|
||||
let sign = Crypto.MD5('abcdexxxdd2daklmn25129_' + ts + '_' + rand)
|
||||
.toString()
|
||||
.toLowerCase();
|
||||
let headers = {
|
||||
'user-agent': agentSp || device.ua,
|
||||
};
|
||||
if (reqUrl.includes('baibaipei')) {
|
||||
headers['device-id'] = device.id;
|
||||
headers['push-token'] = '';
|
||||
headers['sign'] = sign;
|
||||
headers['time'] = ts;
|
||||
headers['md5'] = rand;
|
||||
headers['version'] = '2.1.0';
|
||||
headers['system-model'] = device.model;
|
||||
headers['system-brand'] = device.brand;
|
||||
headers['system-version'] = device.release;
|
||||
}
|
||||
let res = await req(reqUrl, {
|
||||
method: get ? 'get' : 'post',
|
||||
headers: headers,
|
||||
data: postData || {},
|
||||
postType: get ? '' : 'form',
|
||||
});
|
||||
|
||||
let content = res.content;
|
||||
// console.log(content);
|
||||
return content;
|
||||
}
|
||||
|
||||
async function init(cfg) {
|
||||
siteKey = cfg.skey;
|
||||
siteType = cfg.stype;
|
||||
var deviceKey = 'device';
|
||||
var deviceInfo = await local.get(key, deviceKey);
|
||||
if (deviceInfo.length > 0) {
|
||||
try {
|
||||
device = JSON.parse(deviceInfo);
|
||||
} catch (error) {}
|
||||
}
|
||||
if (_.isEmpty(device)) {
|
||||
device = randDevice();
|
||||
device.id = randStr(33).toLowerCase();
|
||||
device.ua = 'okhttp/4.1.0';
|
||||
await local.set(key, deviceKey, JSON.stringify(device));
|
||||
}
|
||||
}
|
||||
|
||||
async function home(filter) {
|
||||
// await req('https://www.facebook.com', {});
|
||||
let data = JSON.parse(await request(url + '/api.php/Index/getTopVideoCategory')).data;
|
||||
let classes = [];
|
||||
let filterObj = {};
|
||||
for (const type of data) {
|
||||
let typeName = type.nav_name;
|
||||
if (typeName == '推荐') continue;
|
||||
let typeId = type.nav_type_id.toString();
|
||||
classes.push({
|
||||
type_id: typeId,
|
||||
type_name: typeName,
|
||||
});
|
||||
if (!filter) continue;
|
||||
try {
|
||||
let filterAll = [];
|
||||
let filterData = JSON.parse(await request(url + '/api.php/Video/getFilterType', { type: typeId })).data;
|
||||
for (let key of Object.keys(filterData)) {
|
||||
let itemValues = filterData[key];
|
||||
if (key === 'plot') 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 = '排序';
|
||||
break;
|
||||
}
|
||||
if (typeExtendName.length === 0) continue;
|
||||
let newTypeExtend = {
|
||||
key: key,
|
||||
name: typeExtendName,
|
||||
};
|
||||
let newTypeExtendKV = [];
|
||||
for (let j = 0; j < itemValues.length; j++) {
|
||||
const name = itemValues[j];
|
||||
let value = key === 'sort' ? j + '' : name === '全部' ? '0' : name;
|
||||
newTypeExtendKV.push({ n: name, v: value });
|
||||
}
|
||||
newTypeExtend['init'] = key === 'sort' ? '1' : newTypeExtendKV[0]['v'];
|
||||
newTypeExtend.value = newTypeExtendKV;
|
||||
filterAll.push(newTypeExtend);
|
||||
}
|
||||
if (!_.isEmpty(filterAll)) {
|
||||
filterObj[typeId] = filterAll;
|
||||
}
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
}
|
||||
}
|
||||
// console.log(await homeVod());
|
||||
// console.log(classes);
|
||||
// console.log(filterObj);
|
||||
return JSON.stringify({
|
||||
class: classes,
|
||||
filters: filterObj,
|
||||
});
|
||||
}
|
||||
|
||||
async function homeVod() {
|
||||
let jsonArray = JSON.parse(await request(url + '/api.php/Index/getHomePage', { type: 1, p: 1 })).data.video;
|
||||
let videos = [];
|
||||
for (const item of jsonArray) {
|
||||
if (item.title.styleType !== 0) continue;
|
||||
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) {
|
||||
if (pg == 0) pg = 1;
|
||||
let reqUrl = url + '/api.php/Video/getFilterVideoList';
|
||||
var formData = 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 }
|
||||
)
|
||||
);
|
||||
console.log(formData);
|
||||
let data = JSON.parse(await request(reqUrl, formData)).data;
|
||||
let videos = [];
|
||||
for (const vod of 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({
|
||||
page: parseInt(data.current_page),
|
||||
pagecount: parseInt(data.last_page),
|
||||
limit: parseInt(data.per_page),
|
||||
total: parseInt(data.total),
|
||||
list: videos,
|
||||
});
|
||||
}
|
||||
|
||||
async function detail(id) {
|
||||
let data = JSON.parse(await request(url + '/api.php/Video/getVideoInfo', { video_id: id })).data.video;
|
||||
let vod = {
|
||||
vod_id: data.vod_id,
|
||||
vod_name: data.vod_name,
|
||||
vod_pic: data.vod_pic,
|
||||
type_name: data.vod_class,
|
||||
vod_year: data.vod_year,
|
||||
vod_area: data.vod_area,
|
||||
vod_remarks: data.vod_remarks || '',
|
||||
vod_actor: data.vod_actor,
|
||||
vod_director: data.vod_director,
|
||||
vod_content: data.vod_content.trim(),
|
||||
};
|
||||
let playlist = {};
|
||||
for (const item of data.vod_play) {
|
||||
let from = item.playerForm;
|
||||
if (from === 'jp') continue;
|
||||
if (from === 'xg') continue;
|
||||
let urls = [];
|
||||
for (const u of item.url) {
|
||||
urls.push(formatPlayUrl(vod.vod_name, u.title) + '$' + u.play_url);
|
||||
}
|
||||
if (!playlist.hasOwnProperty(from) && urls.length > 0) {
|
||||
playlist[from] = urls;
|
||||
}
|
||||
}
|
||||
parse = data.parse || [];
|
||||
vod.vod_play_from = _.keys(playlist).join('$$$');
|
||||
let urls = _.values(playlist);
|
||||
let vod_play_url = [];
|
||||
for (const urlist of urls) {
|
||||
vod_play_url.push(urlist.join('#'));
|
||||
}
|
||||
vod.vod_play_url = vod_play_url.join('$$$');
|
||||
return JSON.stringify({
|
||||
list: [vod],
|
||||
});
|
||||
}
|
||||
|
||||
var parse = [];
|
||||
|
||||
async function play(flag, id, flags) {
|
||||
try {
|
||||
if (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) {
|
||||
if (parse.length > 0) {
|
||||
for (let index = 0; index < parse.length; index++) {
|
||||
try {
|
||||
const p = parse[index];
|
||||
let res = await req(p + id, {
|
||||
headers: { 'user-agent': 'okhttp/4.1.0' },
|
||||
});
|
||||
var result = jsonParse(id, JSON.parse(res.content));
|
||||
if (result.url) {
|
||||
result.parse = 0;
|
||||
return JSON.stringify(result);
|
||||
}
|
||||
} catch (error) {}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (id.indexOf('jqq-') >= 0) {
|
||||
var jqqHeader = await request(url + '/jqqheader.json', null, null, true);
|
||||
var jqqHeaders = JSON.parse(jqqHeader);
|
||||
var ids = id.split('-');
|
||||
var jxJqq = await req('https://api.juquanquanapp.com/app/drama/detail?dramaId=' + ids[1] + '&episodeSid=' + ids[2] + '&quality=LD', { headers: jqqHeaders });
|
||||
var jqqInfo = JSON.parse(jxJqq.content);
|
||||
if (jqqInfo.data.playInfo.url) {
|
||||
return JSON.stringify({
|
||||
parse: 0,
|
||||
playUrl: '',
|
||||
url: jqqInfo.data.playInfo.url,
|
||||
});
|
||||
}
|
||||
}
|
||||
let res = await request(url + '/video.php', { url: id });
|
||||
var result = jsonParse(id, JSON.parse(res).data);
|
||||
if (result.url) {
|
||||
result.parse = 0;
|
||||
return JSON.stringify(result);
|
||||
}
|
||||
return JSON.stringify({
|
||||
parse: 0,
|
||||
playUrl: '',
|
||||
url: id,
|
||||
});
|
||||
} catch (e) {
|
||||
console.log(e);
|
||||
return JSON.stringify({
|
||||
parse: 0,
|
||||
url: id,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
async function search(wd, quick) {
|
||||
let data = JSON.parse(await request(url + '/api.php/Search/getSearch', { key: wd, type_id: 0, p: 1 })).data;
|
||||
let videos = [];
|
||||
for (const vod of 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) {
|
||||
var _str = '';
|
||||
let containsNum = withNum === undefined ? true : withNum;
|
||||
for (var i = 0; i < len; i++) {
|
||||
let 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, false).toUpperCase() + _.random(11, 99) + randStr(1, false).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.startsWith('//')) {
|
||||
url = 'https:' + url;
|
||||
}
|
||||
if (!url.startsWith('http')) {
|
||||
return {};
|
||||
}
|
||||
let headers = json['headers'] || {};
|
||||
let ua = (json['user-agent'] || '').trim();
|
||||
if (ua.length > 0) {
|
||||
headers['User-Agent'] = ua;
|
||||
}
|
||||
let referer = (json['referer'] || '').trim();
|
||||
if (referer.length > 0) {
|
||||
headers['Referer'] = referer;
|
||||
}
|
||||
_.keys(headers).forEach((hk) => {
|
||||
if (!headers[hk]) delete headers[hk];
|
||||
});
|
||||
return {
|
||||
header: headers,
|
||||
url: url,
|
||||
};
|
||||
} catch (error) {
|
||||
console.log(error);
|
||||
}
|
||||
return {};
|
||||
}
|
||||
|
||||
export function __jsEvalReturn() {
|
||||
return {
|
||||
init: init,
|
||||
home: home,
|
||||
homeVod: homeVod,
|
||||
category: category,
|
||||
detail: detail,
|
||||
play: play,
|
||||
search: search,
|
||||
};
|
||||
}
|
||||
//bbQ0FUT1C4Ahhra3lzX29wZW4uanMsYXNzZXRzOi8vanMvbGliL2NhdC5qcxxfX2pzRXZhbFJldHVybgxDcnlwdG8KZGF5anMMamluamEyAl8Ga2V5BnVybAxkZXZpY2UOc2l0ZUtleRBzaXRlVHlwZQJhDnJlcXVlc3QIaW5pdAhob21lDmhvbWVWb2QQY2F0ZWdvcnkMZGV0YWlsCnBhcnNlCHBsYXkMc2VhcmNoGGJhc2U2NEVuY29kZRhiYXNlNjREZWNvZGUOY2hhclN0cg5yYW5kU3RyFHJhbmREZXZpY2UaZm9ybWF0UGxheVVybBJqc29uUGFyc2UIa2t5cz5odHRwczovL2FwaTEuYmFpYmFpcGVpLmNvbTo4ODk5emFiYWNkZWZnaGprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODkMcmVxVXJsEHBvc3REYXRhDmFnZW50U3AEdHMIcmFuZAhzaWduDmhlYWRlcnMGcmVzDmNvbnRlbnQGTUQ1LmFiY2RleHh4ZGQyZGFrbG1uMjUxMjlfFnRvTG93ZXJDYXNlBHVhFHVzZXItYWdlbnQQaW5jbHVkZXMSYmFpYmFpcGVpEmRldmljZS1pZARpZBRwdXNoLXRva2VuCHRpbWUGbWQ1DnZlcnNpb24KMi4xLjMYc3lzdGVtLW1vZGVsCm1vZGVsGHN5c3RlbS1icmFuZApicmFuZBxzeXN0ZW0tdmVyc2lvbg5yZWxlYXNlBnJlcQhwb3N0DG1ldGhvZAhkYXRhCGZvcm0QcG9zdFR5cGUGY2ZnDl8weDViYjcOXzB4MzU4OAplcnJvchJkZXZpY2VLZXkUZGV2aWNlSW5mbwhza2V5CnN0eXBlMHdxODZ3NzNDbU1PcEhjT2V3NkhDdXl3PSB3NHZDdDhLRHdvekNsZz09GHc3N0R2c085d3E5VhBObnc5QWNPTyBaM3cxQk1LWUtnTmF3Nlk9BjB4Mwg5bVZBBjB4MghlMGhFBjB4MQhOKW5sBjB4NAh3NzFmBjB4MAhIZ00zBmxvZw5jb25zb2xlCmxvY2FsDmlzRW1wdHkYb2todHRwLzQuMS4wEnN0cmluZ2lmeRJfMHg0MjE2NDYSXzB4NWJiNzBkEl8weDM1ODg4MBJfMHgzNWI5OTMIcHVzaApzaGlmdBJfMHgyNmY4YTYMdmFSTWNFDHlaU0RLVQx4SVVZWnIMU1FqZXRREl8weDNhMWQxYRJfMHg1ZDJmZTMSXzB4NGQyNWY1ggFBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPQhhdG9iEl8weDFkMWQ5MxJfMHg0Y2NiMmEmcmV0dXJuIChmdW5jdGlvbigpIEB7fS5jb25zdHJ1Y3RvcigicmV0dXJuIHRoaXMiKSggKQQpOwx3aW5kb3cSXzB4NGU4NDk2El8weDU5MThmNxJfMHg0MDM1YTkSXzB4NDdmODNiEl8weGQxZDRlNBJfMHgyMGFjNGMSXzB4NWMzODU2DnJlcGxhY2UMY2hhckF0DmluZGV4T2YYZnJvbUNoYXJDb2RlEl8weDRiNWQ0ZRJfMHg0NDIzYzUSXzB4MjgzMmUxDl8weDU5NGYSXzB4NGYzMTQwEl8weDQ2OGVlYRJfMHg0NWJiNTcSXzB4MmRjN2Q3El8weDVlMjczZhJfMHgzNzY3YzUSXzB4NTBkODJkAiUEMDAUY2hhckNvZGVBdApzbGljZSRkZWNvZGVVUklDb21wb25lbnQMZmlsdGVyDmNsYXNzZXMSZmlsdGVyT2JqCHR5cGUQdHlwZU5hbWUMdHlwZUlkEmZpbHRlckFsbBRmaWx0ZXJEYXRhFGl0ZW1WYWx1ZXMcdHlwZUV4dGVuZE5hbWUabmV3VHlwZUV4dGVuZB5uZXdUeXBlRXh0ZW5kS1YCagJlRC9hcGkucGhwL0luZGV4L2dldFRvcFZpZGVvQ2F0ZWdvcnkQbmF2X25hbWUFqGNQgxZuYXZfdHlwZV9pZA50eXBlX2lkEnR5cGVfbmFtZTgvYXBpLnBocC9WaWRlby9nZXRGaWx0ZXJUeXBlCGtleXMIcGxvdAV7fItXCGFyZWEFMFc6UwhsYW5nBe2LAIoIeWVhcgV0XuNOCHNvcnQFkmOPXgVoUeiQAm4Cdg5maWx0ZXJzEmpzb25BcnJheQx2aWRlb3MIaXRlbQh2T2JqNC9hcGkucGhwL0luZGV4L2dldEhvbWVQYWdlAnAKdmlkZW8KdGl0bGUSc3R5bGVUeXBlCGxpc3QMdm9kX2lkEHZvZF9uYW1lDnZvZF9waWMWdm9kX3JlbWFya3MSdm9kX3Njb3JlBnRpZARwZwxleHRlbmQQZm9ybURhdGEGdm9kQi9hcGkucGhwL1ZpZGVvL2dldEZpbHRlclZpZGVvTGlzdMwDewogICAgICAgICJ0eXBlIjogInt7dGlkfX0iLAogICAgICAgICJwIjogInt7cGd9fSIsCiAgICAgICAgImFyZWEiOiAie3tleHQuYXJlYXxkZWZhdWx0KDApfX0iLAogICAgICAgICJ5ZWFyIjogInt7ZXh0LnllYXJ8ZGVmYXVsdCgwKX19IiwKICAgICAgICAic29ydCI6ICJ7e2V4dC5zb3J0fGRlZmF1bHQoMCl9fSIsCiAgICAgICAgImNsYXNzIjogInt7ZXh0LmNsYXNzfGRlZmF1bHQoMCl9fSIKICAgIH0GZXh0EHBhcnNlSW50GGN1cnJlbnRfcGFnZQhwYWdlEmxhc3RfcGFnZRJwYWdlY291bnQQcGVyX3BhZ2UKbGltaXQKdG90YWwQcGxheWxpc3QIdXJscwJ1GHZvZF9wbGF5X3VybAx1cmxpc3Q2L2FwaS5waHAvVmlkZW8vZ2V0VmlkZW9JbmZvEHZpZGVvX2lkEnZvZF9jbGFzcxB2b2RfeWVhchB2b2RfYXJlYRJ2b2RfYWN0b3IYdm9kX2RpcmVjdG9yFnZvZF9jb250ZW50CHRyaW0Qdm9kX3BsYXkUcGxheWVyRm9ybQRqcAR4ZwIkEHBsYXlfdXJsHGhhc093blByb3BlcnR5BiQkJBp2b2RfcGxheV9mcm9tAiMIZmxhZwRqagxyZXN1bHQSanFxSGVhZGVyFGpxcUhlYWRlcnMGaWRzCmp4SnFxDmpxcUluZm8KeW91a3UKaXFpeWkQdi5xcS5jb20IcHB0dgxsZS5jb20QMTkwNS5jb20IbWd0dhhVc2VyIC0gQWdlbnQUVXNlci1BZ2VudAxoZWFkZXIOZm9yRWFjaAhqcXEtHi9qcXFoZWFkZXIuanNvbgItbmh0dHBzOi8vYXBpLmp1cXVhbnF1YW5hcHAuY29tL2FwcC9kcmFtYS9kZXRhaWw/ZHJhbWFJZD0YJmVwaXNvZGVTaWQ9FiZxdWFsaXR5PUxEEHBsYXlJbmZvDnBsYXlVcmwUL3ZpZGVvLnBocAh0ZXN0EGpzMlByb3h5Dmx6bTN1OC8EaGsQc2VnbWVudHMId2hhdAhyZXNwBmhscwxqc0Jhc2UOYmFzZVVybAxsem0zdTgMc3Vic3RyFmxhc3RJbmRleE9mAi8IY29kZQptYXRjaARwMQRwMgRwMwR1cBRzdGFydHNXaXRoCGh0dHAEd2QKcXVpY2syL2FwaS5waHAvU2VhcmNoL2dldFNlYXJjaAh0ZXh0BmVuYwxCYXNlNjQIVXRmOAZsZW4Od2l0aE51bQhfc3RyFmNvbnRhaW5zTnVtAmkGaWR4DHJhbmRvbQxIdWF3ZWkcSFVBV0VJIE1hdGUgMjAWdG9VcHBlckNhc2UOYnVpbGRJZAZzcmMUcmVwbGFjZUFsbAIgCGpzb24OcmVmZXJlcgQvLwxodHRwczoOUmVmZXJlcg+kAwGmAwEAG6gDAAQAqgMAAawDAAKuAwADsAMADgAGAaABAAAAARwQgwEAqgMADKwDAQyuAwIMsAMDDLIDAAm0AwEJtgMCCbgDAwm6AwQJvAMFAb4DBgHAAwcBwgMIAcQDCQHGAwoByAMLAcoDDAHMAw0BhgIOAc4DDwHQAxAB0gMRAdQDEg3WAxMB2AMUAdoDFQHcAxYBqAMXAQjoUr4AXwoAvgFfCwC+Al8MAL4DXw0AvgRfDgC+BV8PAL4GXxEAvgdfEgC+CF8TAL4JXxQAvgpfFQC+C18XAL4MXxgAvg1fGQC+Dl8aAL4PXxsAKQTvAAAAXwQABPAAAABfBQALXwYAv18HALNfCAAJXwkAJgAAXxAABPEAAABfFgAppAMBFQEAVAYrKxcXFwAEzgMABoICAAiOAQ5iBgG+AwQGBAUFAN4CCuQDAAEA5gMAAQDoAwABAIIBAAEA6gMBACDsAwEBIO4DAQIg8AMBAyDyAwEEIPQDAQUgvAMJAKwDAQzWAxcAqgMADLYDBghhBQBhBABhAwBhAgBhAQBhAADb6AO/LmUBAOxCOQAAACQAAEI3AAAAJAAAx927IO3IZQMAQvsAAAAE/AAAAGIAAJ0E2AAAAJ1iAQCdJAEAQjcAAAAkAABC/QAAACQAAMkL0RHpCg5lBABB/gAAAEz/AAAAys9CAAEAAAQBAQAAJAEAaYsAAABiAwAEAgEAAHFlBABBAwEAAEliAwAEBAEAAL9JYgMABPcAAABxYgIASWIDAAQFAQAAcWIAAEliAwAEBgEAAHFiAQBJYgMABAcBAAAECAEAAEliAwAECQEAAHFlBABBCgEAAEliAwAECwEAAHFlBABBDAEAAEliAwAEDQEAAHFlBABBDgEAAEk4DwEAAM8L0ugIBEEAAADqBgQQAQAATBEBAABiAwBM+AAAANAR6QMOC0wSAQAA0ugEv+oGBBMBAABMFAEAAO6LwQRiBABB+gAAAMEFYgUALqQDCRtdHGwcmSs
Line truncated
|
||||
Reference in new issue
Block a user