diff --git a/Scripts/Cron-Switch.json b/Scripts/Cron-Switch.json new file mode 100644 index 0000000..7e5e92c --- /dev/null +++ b/Scripts/Cron-Switch.json @@ -0,0 +1,10 @@ +{ + "name":"流媒体定时切换合集 @Shawn", + "description":"Crontab Script Gallery by Shawn", + "task":[ + "0 8 * * * https://raw.githubusercontent.com/KOP-XIAO/QuantumultX/master/Scripts/switch-check-ytb.js, tag=YouTube 定时切换, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/YouTube_Letter.png, enabled=true", + "1 8 * * * https://raw.githubusercontent.com/KOP-XIAO/QuantumultX/master/Scripts/switch-check-nf.js, tag=Netflix 定时切换, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Netflix_Letter.png, enabled=true", + "2 8 * * * 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", + "3 8 * * * https://raw.githubusercontent.com/KOP-XIAO/QuantumultX/master/Scripts/switch-check-google.js, tag=Google 送中定时切换, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Google.png, enabled=true", + ] +} \ No newline at end of file diff --git a/Scripts/switch-check-disneyplus.js b/Scripts/switch-check-disneyplus.js index 976f315..26906a3 100644 --- a/Scripts/switch-check-disneyplus.js +++ b/Scripts/switch-check-disneyplus.js @@ -7,8 +7,12 @@ For Quantumult-X 598+ ONLY!! [task_local] +// UI 查询版本 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 +//cron 版本 +0 8 * * * 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 @@ -33,7 +37,11 @@ const STATUS_ERROR = -2 const link = { "media-url": "https://raw.githubusercontent.com/KOP-XIAO/QuantumultX/master/img/southpark/7.png" } -var policy = $environment.params +var cronsign = $environment.executeType == 0 || $environment.executeType == "0" || $environment.executeType == "-1"? "Y" : "N" +var policy = $environment.executeType == 0 || $environment.executeType == "0" || $environment.executeType == "-1"? GetPolicy($environment.sourcePath) : $environment.params +console.log(JSON.stringify($environment)) +console.log("策略组:"+policy) + const message = { action: "get_customized_policy", content: policy @@ -55,14 +63,14 @@ $configuration.sendMessage(message).then(resolve => { $done() } if (resolve.ret) { - output=JSON.stringify(resolve.ret[message.content])? JSON.parse(JSON.stringify(resolve.ret[message.content]["candidates"])) : [$environment.params] + output=JSON.stringify(resolve.ret[message.content])? JSON.parse(JSON.stringify(resolve.ret[message.content]["candidates"])) : [policy] 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) { + console.log("节点数量:"+resolve.ret[policy]["candidates"].length) + if(resolve.ret[policy]["candidates"].length==0) { $done({"title":"Disneyᐩ 检测&切换","htmlMessage":`
😭 无有效节点`});
}
}
@@ -111,10 +119,10 @@ function Check() {
console.log("开始排序")
ReOrder(OKList)
} else if (!OKList[0]){ //不支持
- content = pflag==0 ? `
😭 该节点不支持Disneyᐩ
👇
-------------------------
⟦ `+$environment.params+` ⟧
-------------------------`: `
` + "
❌ ⟦ "+$environment.params+ " ⟧ ⚠️ 切换失败
该策略组内未找到支持 Disneyᐩ 的节点" + "
-----------------------------
检测详情请查看JS脚本记录
-----------------------------"+`
😭 该节点不支持Disneyᐩ
👇
-------------------------
⟦ `+policy+` ⟧
-------------------------`: `
` + "
❌ ⟦ "+policy+ " ⟧ ⚠️ 切换失败
该策略组内未找到支持 Disneyᐩ 的节点" + "
-----------------------------
检测详情请查看JS脚本记录
-----------------------------"+`
🎉 该节点支持 Disneyᐩ ➟` + OKList[0].split(": 支持 ")[1]+`
👇
-------------------------
⟦ `+$environment.params+` ⟧
-------------------------`
+ content = `
🎉 该节点支持 Disneyᐩ ➟` + OKList[0].split(": 支持 ")[1]+`
👇
-------------------------
⟦ `+policy+` ⟧
-------------------------`
$done({"title":"Disneyᐩ 检测&切换", "htmlMessage": content})
}
}, relay)
@@ -165,17 +173,18 @@ function ReOrder(cnt) {
$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ᐩ " + `
` + "
⟦ "+policy+ " ⟧
🎉 该节点支持 Disneyᐩ ➟" + array[0].split(": 支持 ")[1]+ `
` + "
⟦ "+policy+ " ⟧
⚠️ 该节点不支持 Disneyᐩ " + `
` + "
⟦ "+$environment.params+ " ⟧
🚦 即将登陆节点所在地区 ➟" + ResList[1].split("登陆 ")[1]+`
` + "
⟦ "+policy+ " ⟧
🚦 即将登陆节点所在地区 ➟" + ResList[1].split("登陆 ")[1]+`
` + "
❌ ⟦ "+$environment.params+ " ⟧ ⚠️ 切换失败
该策略组内未找到支持 Disneyᐩ 的节点" + "
-----------------------------
检测详情请查看JS脚本记录
-----------------------------"+`
` + "
❌ ⟦ "+policy+ " ⟧ ⚠️ 切换失败
该策略组内未找到支持 Disneyᐩ 的节点" + "
-----------------------------
检测详情请查看JS脚本记录
-----------------------------"+`
` + "
⟦ "+$environment.params+ " ⟧ 已切换至支持 Disneyᐩ "+array[0].split(": 支持 ")[1]+"中延迟最优的路线
👇
⟦ "+array[0].split(": 支持 ")[0]+ " ⟧" + "
"+Ping+"
-----------------------------
检测详情请查看JS脚本记录
-----------------------------"+`
` + "
⟦ "+policy+ " ⟧ 已切换至支持 Disneyᐩ "+array[0].split(": 支持 ")[1]+"中延迟最优的路线
👇
⟦ "+array[0].split(": 支持 ")[0]+ " ⟧" + "
"+Ping+"
-----------------------------
检测详情请查看JS脚本记录
-----------------------------"+`
😭 无有效节点`});
}
}
@@ -96,11 +105,11 @@ function Check() {
console.log("开始排序")
ReOrder(OKList)
} else if (!OKList[0]){ //不支持
- content =pflag==0 ? `
😭 该节点未完整支持 Netflix
👇
-------------------------
⟦ `+$environment.params+` ⟧
-------------------------`: `
` + "
❌ ⟦ "+$environment.params+ " ⟧ ⚠️ 切换失败
该策略组内未找到完整支持 Netflix 的节点" + "
-----------------------------
检测详情请查看JS脚本记录
-----------------------------"+`
😭 该节点未完整支持 Netflix
👇
-------------------------
⟦ `+policy+` ⟧
-------------------------`: `
` + "
❌ ⟦ "+policy+ " ⟧ ⚠️ 切换失败
该策略组内未找到完整支持 Netflix 的节点" + "
-----------------------------
检测详情请查看JS脚本记录
-----------------------------"+`
🎉 该节点完整支持 Netflix
👇
-------------------------
⟦ `+$environment.params+` ⟧
-------------------------`
- //content = `
🎉 该节点支持 Disneyᐩ ➟` + OKList[0].split(": 支持 ")[1]+`
👇
-------------------------
⟦ `+$environment.params+` ⟧
-------------------------`
+ content =`
🎉 该节点完整支持 Netflix
👇
-------------------------
⟦ `+policy+` ⟧
-------------------------`
+ //content = `
🎉 该节点支持 Disneyᐩ ➟` + OKList[0].split(": 支持 ")[1]+`
👇
-------------------------
⟦ `+policy+` ⟧
-------------------------`
$done({"title":"Netflix 检测&切换", "htmlMessage": content})
}
}, relay)
@@ -147,15 +156,16 @@ function ReOrder(cnt) {
$configuration.sendMessage(mes1).then(resolve => {
if (resolve.error) {
console.log(resolve.error);
- content =pflag==0 && array[0]? `
` + "
⟦ "+$environment.params+ " ⟧
🎉 该节点完整支持 Netflix" + `
` + "
⟦ "+$environment.params+ " ⟧
⚠️ 该节点不支持 Netflix" + `
` + "
⟦ "+$environment.params+ " ⟧
🚦 该节点仅支持 Netflix 自制剧集" + `
` + "
⟦ "+policy+ " ⟧
🎉 该节点完整支持 Netflix" + `
` + "
⟦ "+policy+ " ⟧
⚠️ 该节点不支持 Netflix" + `
` + "
⟦ "+policy+ " ⟧
🚦 该节点仅支持 Netflix 自制剧集" + `
` + "
❌ ⟦ "+$environment.params+ " ⟧ ⚠️ 切换失败
该策略组内未找到完整支持 Netflix 的节点" + "
-----------------------------
检测详情请查看JS脚本记录
-----------------------------"+`
` + "
❌ ⟦ "+policy+ " ⟧ ⚠️ 切换失败
该策略组内未找到完整支持 Netflix 的节点" + "
-----------------------------
检测详情请查看JS脚本记录
-----------------------------"+`
` + "
⟦ "+$environment.params+ " ⟧ 已切换至完整支持的路线中延迟最优节点
👇
⟦ "+array[0]+ " ⟧" + "
"+Ping+"
-----------------------------
检测详情请查看JS脚本记录
-----------------------------"+`
` + "
⟦ "+policy+ " ⟧ 已切换至完整支持的路线中延迟最优节点
👇
⟦ "+array[0]+ " ⟧" + "
"+Ping+"
-----------------------------
检测详情请查看JS脚本记录
-----------------------------"+`
😭 无有效节点`});
- }
- }
-
- //$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++) {
- testYTB(output[i])
- }
- if (output.length<=5) {
- relay = 2000
- } else if (output.length<10) {
- relay =4000
- } else if (output.length<15) {
- relay =6000
- } else if (output.length<20) {
- relay =8000
- } else {
- relay =10000
- }
- console.log(output.length+":"+relay)
- setTimeout(() => {
- console.log("⛳️ 共计 "+OKList.length+" 个:支持节点 ➟ "+ OKList)
- console.log("🏠 共计 "+Len(NoList)+" 个:"+NoList)
- console.log("🕹 共计 "+Len(ErrorList)+" 个:"+ErrorList)
- sign = 1
- if (OKList[0] && pflag==1) { //有支持节点、且为策略组才操作
- console.log("开始排序")
- ReOrder(OKList)
- } else if (!OKList[0]){ //不支持
- content =pflag==0 ? `
😭 该节点不支持 YouTube Premium
👇
-------------------------
⟦ `+policy+` ⟧
-------------------------`: `
` + "
❌ ⟦ "+policy+ " ⟧ ⚠️ 切换失败
该策略组内未找到支持 YouTube Premium 的节点" + "
-----------------------------
检测详情请查看JS脚本记录
-----------------------------"+`
🎉 该节点支持 YouTube Premium
👇
-------------------------
⟦ `+policy+` ⟧
-------------------------`
- $done({"title":"YouTube Premium 检测&切换", "htmlMessage": content})
- }
- }, relay)
-
-}
-
-//选择最优延迟节点
-function ReOrder(cnt) {
- const array = cnt;
- const messageURL = {
- action: "url_latency_benchmark",
- content: array
-};
- $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)
- 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]]
- const dict = { [policy] : array[0]};
- if(array[0]) {
- console.log("选定支持YouTube Premium:"+array[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]? `
` + "
⟦ "+policy+ " ⟧
🎉 该节点支持 YouTube Premium" + `
` + "
⟦ "+policy+ " ⟧
⚠️ 该节点不支持 YouTube Premium" + `
` + "
❌ ⟦ "+policy+ " ⟧ ⚠️ 切换失败
该策略组内未找到支持 YouTube Premium 的节点" + "
-----------------------------
检测详情请查看JS脚本记录
-----------------------------"+`
` + "
⟦ "+policy+ " ⟧ 已切换至支持Premium 的路线中延迟最优节点
👇
⟦ "+array[0]+ " ⟧" + "
"+Ping+"
-----------------------------
检测详情请查看JS脚本记录
-----------------------------"+`
😭 无有效节点`});
}
}
@@ -93,10 +105,10 @@ function Check() {
console.log("开始排序")
ReOrder(OKList)
} else if (!OKList[0]){ //不支持
- content =pflag==0 ? `
😭 该节点不支持 YouTube Premium
👇
-------------------------
⟦ `+$environment.params+` ⟧
-------------------------`: `
` + "
❌ ⟦ "+$environment.params+ " ⟧ ⚠️ 切换失败
该策略组内未找到支持 YouTube Premium 的节点" + "
-----------------------------
检测详情请查看JS脚本记录
-----------------------------"+`
😭 该节点不支持 YouTube Premium
👇
-------------------------
⟦ `+policy+` ⟧
-------------------------`: `
` + "
❌ ⟦ "+policy+ " ⟧ ⚠️ 切换失败
该策略组内未找到支持 YouTube Premium 的节点" + "
-----------------------------
检测详情请查看JS脚本记录
-----------------------------"+`
🎉 该节点支持 YouTube Premium
👇
-------------------------
⟦ `+$environment.params+` ⟧
-------------------------`
+ content =`
🎉 该节点支持 YouTube Premium
👇
-------------------------
⟦ `+policy+` ⟧
-------------------------`
$done({"title":"YouTube Premium 检测&切换", "htmlMessage": content})
}
}, relay)
@@ -143,13 +155,14 @@ function ReOrder(cnt) {
$configuration.sendMessage(mes1).then(resolve => {
if (resolve.error) {
console.log(resolve.error);
- content =pflag==0 && array[0]? `
` + "
⟦ "+$environment.params+ " ⟧
🎉 该节点支持 YouTube Premium" + `
` + "
⟦ "+$environment.params+ " ⟧
⚠️ 该节点不支持 YouTube Premium" + `
` + "
❌ ⟦ "+$environment.params+ " ⟧ ⚠️ 切换失败
该策略组内未找到支持 YouTube Premium 的节点" + "
-----------------------------
检测详情请查看JS脚本记录
-----------------------------"+`
` + "
⟦ "+policy+ " ⟧
🎉 该节点支持 YouTube Premium" + `
` + "
⟦ "+policy+ " ⟧
⚠️ 该节点不支持 YouTube Premium" + `
` + "
❌ ⟦ "+policy+ " ⟧ ⚠️ 切换失败
该策略组内未找到支持 YouTube Premium 的节点" + "
-----------------------------
检测详情请查看JS脚本记录
-----------------------------"+`
` + "
⟦ "+$environment.params+ " ⟧ 已切换至支持Premium 的路线中延迟最优节点
👇
⟦ "+array[0]+ " ⟧" + "
"+Ping+"
-----------------------------
检测详情请查看JS脚本记录
-----------------------------"+`
` + "
⟦ "+policy+ " ⟧ 已切换至支持Premium 的路线中延迟最优节点
👇
⟦ "+array[0]+ " ⟧" + "
"+Ping+"
-----------------------------
检测详情请查看JS脚本记录
-----------------------------"+`