mirror of
https://github.com/letian1650/N3RD.git
synced 2025-02-02 09:14:49 +08:00
Add files via upload
This commit is contained in:
parent
dd1892251e
commit
82e3395c33
@ -264,7 +264,7 @@ function pre(){
|
||||
|
||||
let rule = {};
|
||||
let vercode = typeof(pdfl) ==='function'?'drpy2.1':'drpy2';
|
||||
const VERSION = vercode+' 3.9.50beta21 202400529';
|
||||
const VERSION = vercode+' 3.9.50beta24 20240601';
|
||||
/** 已知问题记录
|
||||
* 1.影魔的jinjia2引擎不支持 {{fl}}对象直接渲染 (有能力解决的话尽量解决下,支持对象直接渲染字符串转义,如果加了|safe就不转义)[影魔牛逼,最新的文件发现这问题已经解决了]
|
||||
* Array.prototype.append = Array.prototype.push; 这种js执行后有毛病,for in 循环列表会把属性给打印出来 (这个大毛病需要重点排除一下)
|
||||
@ -701,12 +701,31 @@ function maoss(jxurl, ref, key) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 将base64编码进行url编译
|
||||
* @param str
|
||||
* @returns {string}
|
||||
*/
|
||||
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, '+');
|
||||
}
|
||||
|
||||
/**
|
||||
* url编码,同 encodeURI
|
||||
* @param str
|
||||
* @returns {string}
|
||||
*/
|
||||
function encodeUrl(str){
|
||||
if(typeof(encodeURI) == 'function'){
|
||||
return encodeURI(str)
|
||||
}else{
|
||||
str = (str + '').toString();
|
||||
return encodeURIComponent(str).replace(/%2F/g, '/').replace(/%3F/g, '?').replace(/%3A/g, ':').replace(/%40/g, '@').replace(/%3D/g, '=').replace(/%3A/g, ':').replace(/%2C/g, ',').replace(/%2B/g, '+').replace(/%24/g, '$');
|
||||
}
|
||||
}
|
||||
|
||||
function base64Encode(text){
|
||||
return CryptoJS.enc.Base64.stringify(CryptoJS.enc.Utf8.parse(text));
|
||||
// return text
|
||||
@ -1098,9 +1117,6 @@ let VODS = [];// 一级或者搜索需要的数据列表
|
||||
let VOD = {};// 二级的单个数据
|
||||
let TABS = [];// 二级的自定义线路列表 如: TABS=['道长在线','道长在线2']
|
||||
let LISTS = [];// 二级的自定义选集播放列表 如: LISTS=[['第1集$http://1.mp4','第2集$http://2.mp4'],['第3集$http://1.mp4','第4集$http://2.mp4']]
|
||||
globalThis.encodeUrl = urlencode;
|
||||
globalThis.urlencode = urlencode;
|
||||
|
||||
|
||||
/**
|
||||
* 获取链接的query请求转为js的object字典对象
|
||||
@ -1648,6 +1664,7 @@ function request(url,obj,ocr_flag){
|
||||
* @returns {string|DocumentFragment|*}
|
||||
*/
|
||||
function post(url,obj){
|
||||
obj = obj||{};
|
||||
obj.method = 'POST';
|
||||
return request(url,obj);
|
||||
}
|
||||
@ -1905,7 +1922,7 @@ function homeVodParse(homeVodObj){
|
||||
return '{}'
|
||||
}
|
||||
p = p.trim();
|
||||
let pp = rule.一级.split(';');
|
||||
let pp = rule.一级?rule.一级.split(';'):[];
|
||||
if(p.startsWith('js:')){
|
||||
const TYPE = 'home';
|
||||
var input = MY_URL;
|
||||
@ -2253,7 +2270,7 @@ function searchParse(searchObj) {
|
||||
return '{}'
|
||||
}
|
||||
p = p.trim();
|
||||
let pp = rule.一级.split(';');
|
||||
let pp = rule.一级?rule.一级.split(';'):[];
|
||||
let url = searchObj.searchUrl.replaceAll('**', searchObj.wd);
|
||||
if(searchObj.pg === 1 && url.includes('[')&&url.includes(']')&&!url.includes('#')){
|
||||
url = url.split('[')[1].split(']')[0];
|
||||
@ -2911,10 +2928,29 @@ function getOriginalJs(js_code){
|
||||
}
|
||||
let rsa_private_key = 'MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCqin/jUpqM6+fgYP/oMqj9zcdHMM0mEZXLeTyixIJWP53lzJV2N2E3OP6BBpUmq2O1a9aLnTIbADBaTulTNiOnVGoNG58umBnupnbmmF8iARbDp2mTzdMMeEgLdrfXS6Y3VvazKYALP8EhEQykQVarexR78vRq7ltY3quXx7cgI0ROfZz5Sw3UOLQJ+VoWmwIxu9AMEZLVzFDQN93hzuzs3tNyHK6xspBGB7zGbwCg+TKi0JeqPDrXxYUpAz1cQ/MO+Da0WgvkXnvrry8NQROHejdLVOAslgr6vYthH9bKbsGyNY3H+P12kcxo9RAcVveONnZbcMyxjtF5dWblaernAgMBAAECggEAGdEHlSEPFmAr5PKqKrtoi6tYDHXdyHKHC5tZy4YV+Pp+a6gxxAiUJejx1hRqBcWSPYeKne35BM9dgn5JofgjI5SKzVsuGL6bxl3ayAOu+xXRHWM9f0t8NHoM5fdd0zC3g88dX3fb01geY2QSVtcxSJpEOpNH3twgZe6naT2pgiq1S4okpkpldJPo5GYWGKMCHSLnKGyhwS76gF8bTPLoay9Jxk70uv6BDUMlA4ICENjmsYtd3oirWwLwYMEJbSFMlyJvB7hjOjR/4RpT4FPnlSsIpuRtkCYXD4jdhxGlvpXREw97UF2wwnEUnfgiZJ2FT/MWmvGGoaV/CfboLsLZuQKBgQDTNZdJrs8dbijynHZuuRwvXvwC03GDpEJO6c1tbZ1s9wjRyOZjBbQFRjDgFeWs9/T1aNBLUrgsQL9c9nzgUziXjr1Nmu52I0Mwxi13Km/q3mT+aQfdgNdu6ojsI5apQQHnN/9yMhF6sNHg63YOpH+b+1bGRCtr1XubuLlumKKscwKBgQDOtQ2lQjMtwsqJmyiyRLiUOChtvQ5XI7B2mhKCGi8kZ+WEAbNQcmThPesVzW+puER6D4Ar4hgsh9gCeuTaOzbRfZ+RLn3Aksu2WJEzfs6UrGvm6DU1INn0z/tPYRAwPX7sxoZZGxqML/z+/yQdf2DREoPdClcDa2Lmf1KpHdB+vQKBgBXFCVHz7a8n4pqXG/HvrIMJdEpKRwH9lUQS/zSPPtGzaLpOzchZFyQQBwuh1imM6Te+VPHeldMh3VeUpGxux39/m+160adlnRBS7O7CdgSsZZZ/dusS06HAFNraFDZf1/VgJTk9BeYygX+AZYu+0tReBKSs9BjKSVJUqPBIVUQXAoGBAJcZ7J6oVMcXxHxwqoAeEhtvLcaCU9BJK36XQ/5M67ceJ72mjJC6/plUbNukMAMNyyi62gO6I9exearecRpB/OGIhjNXm99Ar59dAM9228X8gGfryLFMkWcO/fNZzb6lxXmJ6b2LPY3KqpMwqRLTAU/zy+ax30eFoWdDHYa4X6e1AoGAfa8asVGOJ8GL9dlWufEeFkDEDKO9ww5GdnpN+wqLwePWqeJhWCHad7bge6SnlylJp5aZXl1+YaBTtOskC4Whq9TP2J+dNIgxsaF5EFZQJr8Xv+lY9lu0CruYOh9nTNF9x3nubxJgaSid/7yRPfAGnsJRiknB5bsrCvgsFQFjJVs=';
|
||||
let decode_content = '';
|
||||
function aes_decrypt(data) {
|
||||
let key = CryptoJS.enc.Hex.parse("686A64686E780A0A0A0A0A0A0A0A0A0A");
|
||||
let iv = CryptoJS.enc.Hex.parse("647A797964730A0A0A0A0A0A0A0A0A0A");
|
||||
let encrypted = CryptoJS.AES.decrypt({
|
||||
ciphertext: CryptoJS.enc.Base64.parse(data)
|
||||
}, key, {
|
||||
iv: iv,
|
||||
mode: CryptoJS.mode.CBC,
|
||||
padding: CryptoJS.pad.Pkcs7
|
||||
}).toString(CryptoJS.enc.Utf8);
|
||||
return encrypted;
|
||||
}
|
||||
let error_log = false;
|
||||
function logger(text){
|
||||
if(error_log){
|
||||
log(text);
|
||||
}
|
||||
}
|
||||
let decode_funcs = [
|
||||
(text)=>{try {return ungzip(text)} catch (e) {return ''}},
|
||||
(text)=>{try {return base64Decode(text)} catch (e) {return ''}},
|
||||
(text)=>{try {return RSA.decode(text,rsa_private_key,null)} catch (e) {return ''}},
|
||||
(text)=>{try {return ungzip(text)} catch (e) {logger('非gzip加密');return ''}},
|
||||
(text)=>{try {return base64Decode(text)} catch (e) {logger('非b64加密');return ''}},
|
||||
(text)=>{try {return aes_decrypt(text)} catch (e) {logger('非aes加密');return ''}},
|
||||
(text)=>{try {return RSA.decode(text,rsa_private_key,null)} catch (e) {logger('非rsa加密');return ''}},
|
||||
// (text)=>{try {return NODERSA.decryptRSAWithPrivateKey(text, RSA.getPrivateKey(rsa_private_key).replace(/RSA /g,''), {options: {environment: "browser", encryptionScheme: 'pkcs1',b:'1024'}});} catch (e) {log(e.message);return ''}},
|
||||
]
|
||||
let func_index = 0
|
||||
@ -2976,7 +3012,9 @@ function init(ext) {
|
||||
let js = request(ext,{'method':'GET'});
|
||||
if (js){
|
||||
js = getOriginalJs(js);
|
||||
eval(js.replace('var rule', 'rule'));
|
||||
// eval(js.replace('var rule', 'rule'));
|
||||
// eval("(function(){'use strict';"+js.replace('var rule', 'rule')+"})()");
|
||||
eval("(function(){"+js.replace('var rule', 'rule')+"})()");
|
||||
}
|
||||
if(query.type==='url' && query.params){ // 指定type是链接并且传了params支持简写如 ./xx.json
|
||||
rule.params = urljoin(ext,query.params);
|
||||
@ -2985,7 +3023,9 @@ function init(ext) {
|
||||
}
|
||||
} else {
|
||||
ext = getOriginalJs(ext);
|
||||
eval(ext.replace('var rule', 'rule'));
|
||||
// eval(ext.replace('var rule', 'rule'));
|
||||
// eval("(function(){'use strict';"+ext.replace('var rule', 'rule')+"})()");
|
||||
eval("(function(){"+ext.replace('var rule', 'rule')+"})()");
|
||||
}
|
||||
}
|
||||
if (rule.模板 && muban.hasOwnProperty(rule.模板)) {
|
||||
@ -3301,9 +3341,18 @@ function isVideo(url){
|
||||
return result
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取规则
|
||||
* @returns {{}}
|
||||
*/
|
||||
function getRule(key) {
|
||||
return key ? rule[key]||'' : rule
|
||||
}
|
||||
|
||||
function DRPY(){//导出函数
|
||||
return {
|
||||
runMain: runMain,
|
||||
getRule: getRule,
|
||||
init: init,
|
||||
home: home,
|
||||
homeVod: homeVod,
|
||||
@ -3331,6 +3380,7 @@ function DRPY(){//导出函数
|
||||
// 导出函数对象
|
||||
export default {
|
||||
runMain,
|
||||
getRule,
|
||||
init,
|
||||
home,
|
||||
homeVod,
|
||||
|
2
JN/dr_py/libs/drpy2.min.js
vendored
2
JN/dr_py/libs/drpy2.min.js
vendored
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user