mirror of
https://github.com/letian1650/N3RD.git
synced 2025-01-24 19:45:01 +08:00
264 lines
7.6 KiB
JavaScript
264 lines
7.6 KiB
JavaScript
var VODS = [];
|
||
var $ = {};
|
||
if (!String.prototype.includes) {
|
||
String.prototype.includes = function (search, start) {
|
||
|
||
if (typeof start !== 'number') {
|
||
start = 0;
|
||
}
|
||
|
||
if (start + search.length > this.length) {
|
||
return false;
|
||
} else {
|
||
return this.indexOf(search, start) !== -1;
|
||
}
|
||
};
|
||
}
|
||
|
||
if (!Array.prototype.includes) {
|
||
Object.defineProperty(Array.prototype, 'includes', {
|
||
value: function (searchElement, fromIndex) {
|
||
|
||
if (this == null) {//this是空或者未定义,抛出错误
|
||
throw new TypeError('"this" is null or not defined');
|
||
}
|
||
|
||
var o = Object(this);//将this转变成对象
|
||
var len = o.length >>> 0;//无符号右移0位,获取对象length属性,如果未定义就会变成0
|
||
|
||
if (len === 0) {//length为0直接返回false未找到目标值
|
||
return false;
|
||
}
|
||
|
||
var n = fromIndex | 0;//查找起始索引
|
||
var k = Math.max(n >= 0 ? n : len - Math.abs(n), 0);//计算正确起始索引,因为有可能是负值
|
||
|
||
while (k < len) {//从起始索引处开始循环
|
||
if (o[k] === searchElement) {//如果某一位置与寻找目标相等,返回true,找到了
|
||
return true;
|
||
}
|
||
k++;
|
||
}
|
||
return false;//未找到,返回false
|
||
}
|
||
});
|
||
}
|
||
if (typeof String.prototype.startsWith != 'function') {
|
||
String.prototype.startsWith = function (prefix){
|
||
return this.slice(0, prefix.length) === prefix;
|
||
};
|
||
}
|
||
if (typeof String.prototype.endsWith != 'function') {
|
||
String.prototype.endsWith = function(suffix) {
|
||
return this.indexOf(suffix, this.length - suffix.length) !== -1;
|
||
};
|
||
}
|
||
|
||
Object.assign = function () {
|
||
var target = arguments[0];
|
||
for (var i = 1; i < arguments.length; i++) {
|
||
var source = arguments[i];
|
||
for (var key in source) {
|
||
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
||
target[key] = source[key];
|
||
}
|
||
}
|
||
}
|
||
return target;
|
||
};
|
||
Object.prototype.myValues=function(obj){
|
||
if(obj ==null) {
|
||
throw new TypeError("Cannot convert undefined or null to object");
|
||
}
|
||
var res=[]
|
||
for(var k in obj){
|
||
if(obj.hasOwnProperty(k)){//需判断是否是本身的属性
|
||
res.push(obj[k]);
|
||
}
|
||
}
|
||
return res;
|
||
}
|
||
if (typeof Object.prototype.values != 'function') {
|
||
Object.prototype.values=function(obj){
|
||
if(obj ==null) {
|
||
throw new TypeError("Cannot convert undefined or null to object");
|
||
}
|
||
var res=[]
|
||
for(var k in obj){
|
||
if(obj.hasOwnProperty(k)){//需判断是否是本身的属性
|
||
res.push(obj[k]);
|
||
}
|
||
}
|
||
return res;
|
||
}
|
||
}
|
||
|
||
Array.prototype.join = function (emoji) {
|
||
// emoji = emoji||',';
|
||
emoji = emoji||'';
|
||
let self = this;
|
||
let str = "";
|
||
let i = 0;
|
||
if (!Array.isArray(self)) {throw String(self)+'is not Array'}
|
||
if(self.length===0){return ''}
|
||
if (self.length === 1){return String(self[0])}
|
||
i = 1;
|
||
str = this[0];
|
||
for (; i < self.length; i++) {
|
||
str += String(emoji)+String(self[i]);
|
||
}
|
||
return str;
|
||
};
|
||
Array.prototype.append = Array.prototype.push;
|
||
String.prototype.strip = String.prototype.trim;
|
||
function 是否正版(vipUrl){
|
||
let flag = new RegExp('qq\.com|iqiyi\.com|youku\.com|mgtv\.com|bilibili\.com|sohu\.com|ixigua\.com|pptv\.com|miguvideo\.com|le\.com|1905\.com|fun\.tv');
|
||
return flag.test(vipUrl);
|
||
}
|
||
function urlDeal(vipUrl){
|
||
if(!vipUrl){
|
||
return ''
|
||
}
|
||
if(!是否正版(vipUrl)){
|
||
return vipUrl
|
||
}
|
||
if(!/miguvideo/.test(vipUrl)){
|
||
vipUrl=vipUrl.split('#')[0].split('?')[0];
|
||
}
|
||
return vipUrl
|
||
}
|
||
function setResult(d){
|
||
if(!Array.isArray(d)){
|
||
return []
|
||
}
|
||
d.forEach(function (it){
|
||
let obj = {
|
||
vod_id:it.url||'',
|
||
vod_name: it.title||'',
|
||
vod_remarks: it.desc||'',
|
||
vod_content: it.content||'',
|
||
vod_pic: it.pic_url||it.img||'',
|
||
};
|
||
let keys = Object.keys(it);
|
||
if(keys.includes('tname')){
|
||
obj.type_name = it.tname||'';
|
||
}
|
||
if(keys.includes('tid')){
|
||
obj.type_id = it.tid||'';
|
||
}
|
||
if(keys.includes('year')){
|
||
obj.vod_year = it.year||'';
|
||
}
|
||
if(keys.includes('actor')){
|
||
obj.vod_actor = it.actor||'';
|
||
}
|
||
if(keys.includes('director')){
|
||
obj.vod_director = it.director||'';
|
||
}
|
||
if(keys.includes('area')){
|
||
obj.vod_area = it.area||'';
|
||
}
|
||
VODS.push(obj);
|
||
});
|
||
return VODS
|
||
}
|
||
function setResult2(res){
|
||
VODS = res.list||[];
|
||
return VODS
|
||
}
|
||
function setHomeResult(res){
|
||
if(!res||typeof(res)!=='object'){
|
||
return []
|
||
}
|
||
return setResult(res.list);
|
||
}
|
||
// 千万不要用for in 推荐 forEach (for in 会打乱顺序)
|
||
//猫函数
|
||
function maoss(jxurl, ref, key) {
|
||
eval(getCryptoJS());
|
||
try {
|
||
var getVideoInfo = function (text) {
|
||
return CryptoJS.AES.decrypt(text, key, {iv: iv, padding: CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8);
|
||
};
|
||
var token_key = key == undefined ? 'dvyYRQlnPRCMdQSe' : key;
|
||
if (ref) {
|
||
var html = request(jxurl, {
|
||
headers: {
|
||
'Referer': ref
|
||
}
|
||
});
|
||
} else {
|
||
var html = request(jxurl);
|
||
}
|
||
// print(html);
|
||
if (html.indexOf('&btwaf=') != -1) {
|
||
html = request(jxurl + '&btwaf' + html.match(/&btwaf(.*?)"/)[1], {
|
||
headers: {
|
||
'Referer': ref
|
||
}
|
||
})
|
||
}
|
||
var token_iv = html.split('_token = "')[1].split('"')[0];
|
||
var key = CryptoJS.enc.Utf8.parse(token_key);
|
||
var iv = CryptoJS.enc.Utf8.parse(token_iv);
|
||
// log("iv:"+iv);
|
||
// log(html);
|
||
// print(key);
|
||
// print(iv);
|
||
eval(html.match(/var config = {[\s\S]*?}/)[0] + '');
|
||
// config.url = config.url.replace(/,/g,'');
|
||
// print(config.url);
|
||
if (!config.url.startsWith('http')) {
|
||
//config.url = decodeURIComponent(AES(config.url, key, iv));
|
||
config.url = CryptoJS.AES.decrypt(config.url, key, {
|
||
iv: iv,
|
||
padding: CryptoJS.pad.Pkcs7
|
||
}).toString(CryptoJS.enc.Utf8)
|
||
}
|
||
return config.url;
|
||
} catch (e) {
|
||
return '';
|
||
}
|
||
}
|
||
|
||
function request(url,obj){
|
||
// obj = obj||{'user-agent': MOBILE_UA};
|
||
let new_obj;
|
||
if(typeof(fetch_params)!=='undefined'){
|
||
new_obj = obj?Object.assign(fetch_params,obj):fetch_params;
|
||
}else{
|
||
new_obj = obj||{}
|
||
}
|
||
if(!new_obj||!new_obj.headers||(!new_obj.headers['User-Agent']&&!new_obj.headers['user-agent'])){
|
||
new_obj.headers['User-Agent'] = MOBILE_UA;
|
||
}
|
||
// delete new_obj.headers['Referer'];
|
||
// print(obj);
|
||
// print(new_obj);
|
||
if(typeof(fetch)!==undefined){
|
||
let html = fetch(url,new_obj);
|
||
if (/\?btwaf=/.test(html)) {//宝塔验证
|
||
url=url.split('#')[0]+'?btwaf'+html.match(/btwaf(.*?)\"/)[1];
|
||
log("宝塔验证跳转到:"+url);
|
||
html = fetch(url, new_obj);
|
||
}
|
||
return html
|
||
}
|
||
return ''
|
||
}
|
||
|
||
function rc(url){// 系统已经有require方法了,再覆盖的话无法操作了
|
||
res = eval(requireObj(url));
|
||
// print(res);
|
||
return res;
|
||
// return eval.call(null, requireObj(url));
|
||
}
|
||
|
||
$.require = rc;
|
||
|
||
function urlencode (str) {
|
||
str = (str + '').toString();
|
||
|
||
return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').
|
||
replace(/\)/g, '%29').replace(/\*/g, '%2A').replace(/%20/g, '+');
|
||
} |