/*** Thanks to & modified from 1. https://gist.githubusercontent.com/Hyseen/b06e911a41036ebc36acf04ddebe7b9a/raw/nf_check.js For Quantumult-X 598+ ONLY!! [task_local] event-interaction https://raw.githubusercontent.com/KOP-XIAO/QuantumultX/master/Scripts/switch-check-disneyplus.js, tag=Disneyᐩ 检测&切换, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Disney.png, enabled=true ps. 简单粗暴的 UI-Interaction 版本。无数据持久化、粗暴延迟等待。完美主义建议使用 Helge大佬的boxjs版本 https://t.me/QuanXNews/193 @XIAO_KOP **/ const BASE_URL_DISNEY = 'https://www.disneyplus.com'; const arrow = " ➟ " const UA = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.61 Safari/537.36' // 即将登陆 const STATUS_COMING = 2 // 支持解锁 const STATUS_AVAILABLE = 1 // 不支持解锁 const STATUS_NOT_AVAILABLE = 0 // 检测超时 const STATUS_TIMEOUT = -1 // 检测异常 const STATUS_ERROR = -2 const link = { "media-url": "https://raw.githubusercontent.com/KOP-XIAO/QuantumultX/master/img/southpark/7.png" } var policy = $environment.params const message = { action: "get_customized_policy", content: policy }; var output=[] var OKList=[] var ResList=["即将登陆节点 ➟ "] var NoList=["不支持节点 ➟ "] var timeoutList=["检测超时节点 ➟ "] var pflag=1 //是否是策略,或者简单节点 var sign=0 //是否停止 $configuration.sendMessage(message).then(resolve => { if (resolve.error) { console.log(resolve.error); $done() } if (resolve.ret) { output=JSON.stringify(resolve.ret[message.content])? JSON.parse(JSON.stringify(resolve.ret[message.content]["candidates"])) : [$environment.params] pflag = JSON.stringify(resolve.ret[message.content])? pflag:0 console.log("Disneyᐩ 检测&切换") console.log("节点or策略组:"+pflag) console.log(JSON.stringify(resolve.ret)) if (pflag==1) { console.log("节点数量:"+resolve.ret[$environment.params]["candidates"].length) if(resolve.ret[$environment.params]["candidates"].length==0) { $done({"title":"Disneyᐩ 检测&切换","htmlMessage":`
😭 无有效节点`});
}
}
//$notify(typeof(output),output)
Check()
//$done({"title":"策略内容","message":output})
}
//$done();|
}, reject => {
// Normally will never happen.
$done();
});
function Len(cnt) {
return cnt.length-1
}
function Check() {
var relay = 2000;
for ( var i=0;i < output.length;i++) {
testDisneyPlus(output[i])
}
if (output.length<=3) {
relay = 3500
} else if (output.length<=5) {
relay = 4000
} else if (output.length<10) {
relay =4500
} else if (output.length<15) {
relay =6500
} else if (output.length<20) {
relay =8500
} else if (output.length<50){
relay =11000
} else {
relay =13000
}
console.log(output.length+":"+relay)
setTimeout(() => {
console.log("⛳️ 共计 "+OKList.length+" 个:支持节点 ➟ "+ OKList)
console.log("🏠 共计 "+Len(NoList)+" 个:"+NoList)
console.log("🕹 共计 "+Len(timeoutList)+" 个:"+timeoutList)
sign = 1
if (OKList[0] && pflag==1) { //有支持节点、且为策略组才操作
console.log("开始排序")
ReOrder(OKList)
} else if (!OKList[0]){ //不支持
content = pflag==0 ? `
😭 该节点不支持Disneyᐩ
👇
-------------------------
⟦ `+$environment.params+` ⟧
-------------------------`: `
` + "
❌ ⟦ "+$environment.params+ " ⟧ ⚠️ 切换失败
该策略组内未找到支持 Disneyᐩ 的节点" + "
-----------------------------
检测详情请查看JS脚本记录
-----------------------------"+`
🎉 该节点支持 Disneyᐩ ➟` + OKList[0].split(": 支持 ")[1]+`
👇
-------------------------
⟦ `+$environment.params+` ⟧
-------------------------`
$done({"title":"Disneyᐩ 检测&切换", "htmlMessage": content})
}
}, relay)
}
//选择最优延迟节点
function ReOrder(cnt) {
const array = cnt//;
const messageURL = {
action: "url_latency_benchmark",
content: array.map(item=>item.split(": 支持 ")[0])
};
$configuration.sendMessage(messageURL).then(resolve => {
if (resolve.error) {
console.log(resolve.error);
}
if (resolve.ret) {
let output=JSON.stringify(resolve.ret);
//console.log("节点延迟:"+output);
//排序
//console.log("排序前: "+ array)
if(array){
try {
array.sort(function (a,b) {
//console.log(a+" VS "+b)
a=a.split(": 支持 ")[0]
b=b.split(": 支持 ")[0]
return (resolve.ret[a][1]!=-1 && resolve.ret[b][1] !=-1)? resolve.ret[a][1]-resolve.ret[b][1] : resolve.ret[b][1]
})
} catch (err) {
console.log(err)
}
}
console.log("排序后: "+array)
let Ping =resolve.ret[array[0].split(": 支持 ")[0]]
const dict = { [policy] : array[0].split(": 支持 ")[0]};
if(array[0]) {
console.log("选定支持 Disneyᐩ 节点:"+array[0].split(": 支持 ")[0]+"延迟数据为 👉"+Ping)
Ping = " ⚡️ 节点延迟 ➟ 「 "+Ping + " 」 "
}
const mes1 = {
action: "set_policy_state",
content: dict
};
$configuration.sendMessage(mes1).then(resolve => {
if (resolve.error) {
console.log(resolve.error);
content =pflag==0 && array[0]? `
` + "
⟦ "+$environment.params+ " ⟧
🎉 该节点支持 Disneyᐩ ➟" + array[0].split(": 支持 ")[1]+ `
` + "
⟦ "+$environment.params+ " ⟧
⚠️ 该节点不支持 Disneyᐩ " + `
` + "
⟦ "+$environment.params+ " ⟧
🚦 即将登陆节点所在地区 ➟" + ResList[1].split("登陆 ")[1]+`
` + "
❌ ⟦ "+$environment.params+ " ⟧ ⚠️ 切换失败
该策略组内未找到支持 Disneyᐩ 的节点" + "
-----------------------------
检测详情请查看JS脚本记录
-----------------------------"+`
` + "
⟦ "+$environment.params+ " ⟧ 已切换至支持 Disneyᐩ "+array[0].split(": 支持 ")[1]+"中延迟最优的路线
👇
⟦ "+array[0].split(": 支持 ")[0]+ " ⟧" + "
"+Ping+"
-----------------------------
检测详情请查看JS脚本记录
-----------------------------"+`