update UG

This commit is contained in:
qist
2023-10-26 15:55:18 +08:00
parent b0e4a0ba34
commit 00dbd9c959
13 changed files with 20 additions and 380 deletions
+1 -364
View File
@@ -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/ZHJhbWFJZD0YJmVwaXNvZGVTaWQ9FiZxdWFsaXR5PUxEEHBsYXlJbmZvDnBsYXlVcmwUL3ZpZGVvLnBocAh0ZXN0EGpzMlByb3h5Dmx6bTN1OC8EaGsQ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