更改提示通知的逻辑

This commit is contained in:
Shawn
2020-06-22 11:13:50 +08:00
parent d8238691e5
commit dbad260e65
2 changed files with 54 additions and 40 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@@ -1,14 +1,14 @@
/** /**
☑️ 资源解析器 ©𝐒𝐡𝐚𝐰𝐧 ⟦2020-06-21 13:59⟧ ☑️ 资源解析器 ©𝐒𝐡𝐚𝐰𝐧 ⟦2020-06-22 11:59⟧
---------------------------------------------------------- ----------------------------------------------------------
🚫 发现 𝐁𝐔𝐆 请反馈: @Shawn_KOP_bot 🚫 发现 𝐁𝐔𝐆 请反馈: @Shawn_KOP_bot
⛳️ 关注 🆃🅶 相关频道: https://t.me/QuanX_API ⛳️ 关注 🆃🅶 相关频道: https://t.me/QuanX_API
🗣 🆃🄷🄰🄽🄺🅂 🆃🄾 @Jamie CHIEN, @M**F**, @c0lada 🗣 🆃🄷🄰🄽🄺🅂 🆃🄾 @Jamie CHIEN, @M**F**, @c0lada
🤖 主要功能: 🤖 主要功能:
A. 将各格式服务器订阅解析成 𝐐𝐮𝐚𝐧𝐭𝐮𝐦𝐮𝐥𝐭 𝐗 格式引用 A. 将各格式服务器订阅解析成 𝐐𝐮𝐚𝐧𝐭𝐮𝐦𝐮𝐥𝐭 𝐗 格式引用
✔︎ 支持 V2RayN/SSR/SS/SSD/Trojan/QuanX/Surge/https 订阅 ✔︎ 支持 V2RayN/SSR/SS/SSD/Trojan/QuanX/Surge/https 订阅
✔︎ 提供说明 1⃣ 中的可选个性化参数 ✔︎ 提供说明 1⃣ 中的可选个性化参数(筛选、重命名 等)
B. rewrite(重写) /filter(分流) 的转换&筛选 B. rewrite(重写) /filter(分流) 的转换&筛选
✔︎ 用于禁用远程引用中某(几)项 rewrite/hostname/filter ✔︎ 用于禁用远程引用中某(几)项 rewrite/hostname/filter
✔︎ Surge 类型规则 list(不含策略组)的解析与使用 ✔︎ Surge 类型规则 list(不含策略组)的解析与使用
@@ -20,16 +20,16 @@ B. rewrite(重写) /filter(分流) 的转换&筛选
1⃣ ⟦server 节点⟧ ➠ 参数说明: 1⃣ ⟦server 节点⟧ ➠ 参数说明:
⦿ info=1, 开启通知提示机场 ✈️ 流量信息(如有提供); ⦿ info=1, 开启通知提示机场 ✈️ 流量信息(如有提供);
⦿ emoji=1,2 或 -1, 为添加/删除节点名中的地区 emoji 旗帜; ⦿ emoji=1,2 或 -1, 为添加/删除节点名中的地区 emoji 旗帜;
♦︎ 国行设备请用 emoji=2 国行设备请用 emoji=2
⦿ udp=1, tfo=1, tls13=1, 分别开启 udp-relay/fast-open/tls1.3; ⦿ udp=1, tfo=1, tls13=1, 分别开启 udp-relay/fast-open/tls1.3;
⦿ cert=0, 强制"tls-verification=false" 跳过证书验证; ⦿ cert=0, 强制"tls-verification=false" 跳过证书验证;
⦿ in, out, 分别为 保留/删除 节点, 多参数用 "+" 连接(逻辑"或"), 逻辑"与"用 "." 连接; ⦿ in, out, 分别为 保留/删除 节点, 多参数用 "+" 连接(逻辑"或"), 逻辑"与"用 "." 连接;
♦︎ 可直接用中文, 特殊字符请 urlencode 后使用, 如 可直接用中文, 特殊字符请 urlencode 后使用, 如
"@"☞"%40", "+"☞"%2B", 空格☞"%20", "&"☞"%26" "@"☞"%40", "+"☞"%2B", 空格☞"%20", "&"☞"%26"
♦︎ 如 "in=香港.IPLC.04+台湾&out=香港%20BGP" 如 "in=香港.IPLC.04+台湾&out=香港%20BGP"
⦿ rename 重命名、删除字段, "旧名@新名", "删除字段1.删除字段2☠", 以及 "前缀@", "@后缀",用 "+" 连接多个参数; ⦿ rename 重命名、删除字段, "旧名@新名", "删除字段1.删除字段2☠", 以及 "前缀@", "@后缀",用 "+" 连接多个参数;
♦︎ 如 "rename=香港@HK+[SS]@+@[1X]+倍率.流量☠️" 如 "rename=香港@HK+[SS]@+@[1X]+倍率.流量☠️"
♦︎ 如想删除 ".", 请用"rename=.@點+點☠️" 类似操作 如想删除 ".", 请用"rename=.@點+點☠️" 类似操作
⦿ sort=1, -1, 排序参数, 分别根据节点名 正序/逆序 排列; ⦿ sort=1, -1, 排序参数, 分别根据节点名 正序/逆序 排列;
2⃣ ⟦rewrite 重写⟧/⟦filter 分流⟧ ➠ 参数说明: 2⃣ ⟦rewrite 重写⟧/⟦filter 分流⟧ ➠ 参数说明:
@@ -39,6 +39,9 @@ B. rewrite(重写) /filter(分流) 的转换&筛选
⦿ 示范: 禁用某重写引用中的 "淘宝比价 js" 以及 "weibo 的 js" ⦿ 示范: 禁用某重写引用中的 "淘宝比价 js" 以及 "weibo 的 js"
⚠️ ☞ https://myrewrite.list#out=tb_price.js+wb_ad.js ⚠️ ☞ https://myrewrite.list#out=tb_price.js+wb_ad.js
3⃣ 通知参数 ntf=0/1, 用于 关闭/打开 资源解析器的提示通知
⦿ rewrite/filter 默认“开启”通知提示, 以防规则误删除
⦿ server 资源解析则默认”关闭“通知提示
---------------------------------------------------------- ----------------------------------------------------------
*/ */
@@ -52,8 +55,8 @@ B. rewrite(重写) /filter(分流) 的转换&筛选
3⃣ 则填入 Quanx 节点引用的的总链接为 https://raw.githubusercontent.com/crossutility/Quantumult-X/master/server-complete.txt#in=tls+ss&out=http+2 3⃣ 则填入 Quanx 节点引用的的总链接为 https://raw.githubusercontent.com/crossutility/Quantumult-X/master/server-complete.txt#in=tls+ss&out=http+2
4⃣ 填入上述链接, 并打开的资源解析器开关 4⃣ 填入上述链接, 并打开的资源解析器开关
PS. 隐藏参数 ntf=1, 用于打开资源解析器的操作提示通知 (默认关闭) PS. 隐藏参数 ntf=0/1, 用于关闭/打开资源解析器的提示通知
⦿ rewrite/filter 资源在有 in/out 参数时会强制开启通知提示, 以防规则误删除 ⦿ rewrite/filter 资源在有 in/out 参数时会默认开启通知提示, 以防规则误删除
------------------------------ ------------------------------
*/ */
@@ -80,7 +83,7 @@ var Ppolicy=mark0 && para1.indexOf("policy=")!=-1? decodeURIComponent(para1.spli
var Pcert0=mark0 && para1.indexOf("cert=")!=-1? para1.split("cert=")[1].split("&")[0]:1; var Pcert0=mark0 && para1.indexOf("cert=")!=-1? para1.split("cert=")[1].split("&")[0]:1;
var Psort0=mark0 && para1.indexOf("sort=")!=-1? para1.split("sort=")[1].split("&")[0]:0; var Psort0=mark0 && para1.indexOf("sort=")!=-1? para1.split("sort=")[1].split("&")[0]:0;
var PTls13=mark0 && para1.indexOf("tls13=")!=-1? para1.split("tls13=")[1].split("&")[0]:0; var PTls13=mark0 && para1.indexOf("tls13=")!=-1? para1.split("tls13=")[1].split("&")[0]:0;
var Pntf0= mark0 && para1.indexOf("ntf=")!=-1? para1.split("ntf=")[1].split("&")[0]:0; var Pntf0= mark0 && para1.indexOf("ntf=")!=-1? para1.split("ntf=")[1].split("&")[0]:2;
var Pb64= mark0 && para1.indexOf("b64=")!=-1? para1.split("b64=")[1].split("&")[0]:0; var Pb64= mark0 && para1.indexOf("b64=")!=-1? para1.split("b64=")[1].split("&")[0]:0;
var emojino=[" 0⃣ "," 1⃣ "," 2⃣ "," 3⃣ "," 4⃣ "," 5⃣ "," 6⃣ "," 7⃣ "," 8⃣ "," 9⃣ "," 🔟 "] var emojino=[" 0⃣ "," 1⃣ "," 2⃣ "," 3⃣ "," 4⃣ "," 5⃣ "," 6⃣ "," 7⃣ "," 8⃣ "," 9⃣ "," 🔟 "]
var pfi=Pin0? "in="+Pin0+", ":"" var pfi=Pin0? "in="+Pin0+", ":""
@@ -94,10 +97,10 @@ const Base64=new Base64Code();
const escapeRegExp = str => str.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); //处理特殊符号以便正则匹配使用 const escapeRegExp = str => str.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); //处理特殊符号以便正则匹配使用
const qxpng="https://raw.githubusercontent.com/crossutility/Quantumult-X/master/quantumult-x.png" const qxpng="https://raw.githubusercontent.com/crossutility/Quantumult-X/master/quantumult-x.png"
var subinfo_link = {"open-url": "https://t.me/QuanX_API", "media-url" :"https://shrtm.nu/ebAr"}; var subinfo_link = {"open-url": "https://t.me/QuanX_API", "media-url" :"https://shrtm.nu/ebAr"};
var rwrite_link = {"open-url":link0, "media-url": "https://shrtm.nu/G2Xn"} var rwrite_link = {"open-url":link0.split("#")[0], "media-url": "https://shrtm.nu/G2Xn"}
var rule_link={"open-url":link0, "media-url": "https://shrtm.nu/7eiK"} var rule_link={"open-url":link0.split("#")[0], "media-url": "https://shrtm.nu/7eiK"}
var nan_link={"open-url":link0, "media-url": qxpng} var nan_link={"open-url":link0.split("#")[0], "media-url": qxpng}
var sub_link={"open-url":link0, "media-url": "https://shrtm.nu/ebAr"} var sub_link={"open-url":link0.split("#")[0], "media-url": "https://shrtm.nu/ebAr"}
//$notify(link0,type0,content0) //$notify(link0,type0,content0)
@@ -158,24 +161,25 @@ if(flag==3){
}else if(flag==1){ }else if(flag==1){
if(Pin0||Pout0){ if(Pin0||Pout0){
total=Filter(total,Pin0,Pout0) total=Filter(total,Pin0,Pout0)
} else {
if(Pntf0!=0){
$notify("👥 引用"+"⟦"+subtag+"⟧"+" 开始转换节点订阅","🐼️ 如需筛选节点请使用in/out及其他参数可参考此示范:","👉 https://t.me/QuanXNews/110",sub_link);}
} }
// else {
// if(Pntf0!=0){
// $notify("👥 引用"+"⟦"+subtag+"⟧"+" 开始转换节点订阅","🐼️ 如需筛选节点请使用in/out及其他参数可参考此示范:","👉 https://t.me/QuanXNews/110",sub_link);}
// }
if(Prrname){ if(Prrname){
if(Pntf0!=0){ // if(Pntf0!=0){
$notify("👥 引用"+"⟦"+subtag+"⟧"+" 开始节点重命名","⚠️ 格式为 \"旧名@新名\",\"删除字段☠️\",及 \"前缀@\",\"@后缀\"","👉 当前添加参数为: "+Prrname, sub_link);} // $notify("👥 引用"+"⟦"+subtag+"⟧"+" 开始节点重命名","⚠️ 格式为 \"旧名@新名\",\"删除字段☠️\",及 \"前缀@\",\"@后缀\"","👉 当前添加参数为: "+Prrname, sub_link);}
var Prn=Prrname; var Prn=Prrname;
total=total.map(Rename); total=total.map(Rename);
} }
if(Pemoji){ if(Pemoji){
if(Pntf0!=0){ // if(Pntf0!=0){
$notify("👥 引用"+"⟦"+subtag+"⟧"+" 开始更改旗帜 emoji","⚠️ 清除emoji请用参数 -1, 国行设备添加emoji请使用参数 2","👉 当前添加参数为: emoji="+Pemoji,sub_link)}; // $notify("👥 引用"+"⟦"+subtag+"⟧"+" 开始更改旗帜 emoji","⚠️ 清除emoji请用参数 -1, 国行设备添加emoji请使用参数 2","👉 当前添加参数为: emoji="+Pemoji,sub_link)};
total=emoji_handle(total,Pemoji); total=emoji_handle(total,Pemoji);
} }
if(Prname){ if(Prname){
if(Pntf0!=0){ // if(Pntf0!=0){
$notify("👥 引用"+"⟦"+subtag+"⟧"+" 开始节点重命名","⚠️ 格式为 \"旧名@新名\",\"删除字段☠️\",及 \"前缀@\",\"@后缀\"","👉 当前添加参数为: "+Prname,sub_link);} // $notify("👥 引用"+"⟦"+subtag+"⟧"+" 开始节点重命名","⚠️ 格式为 \"旧名@新名\",\"删除字段☠️\",及 \"前缀@\",\"@后缀\"","👉 当前添加参数为: "+Prname,sub_link);}
var Prn=Prname; var Prn=Prname;
total=total.map(Rename); total=total.map(Rename);
} }
@@ -183,9 +187,9 @@ if(flag==3){
total=QXSort(total,Psort0); total=QXSort(total,Psort0);
} }
total=TagCheck_QX(total) total=TagCheck_QX(total)
if(total.length==0){ // if(total.length==0){
$notify("‼️ 引用"+"⟦"+subtag+"⟧"+"无有效节点","⁉️请自行检查原始链接以及过滤参数",para,nan_link) // $notify("‼️ 引用"+"⟦"+subtag+"⟧"+"无有效节点","⁉️请自行检查原始链接以及过滤参数",para,nan_link)
}; // };
//$notify("Final","List",total) //$notify("Final","List",total)
total=total.join("\n"); total=total.join("\n");
if(flag==1){ if(flag==1){
@@ -273,7 +277,7 @@ function Rewrite_Filter(subs,Pin,Pout){
} }
} }
} }
if(dwrite.length>0){ if(dwrite.length>0 && Pntf0!=0){
nowrite=dwrite.length<=10?emojino[dwrite.length]:dwrite.length nowrite=dwrite.length<=10?emojino[dwrite.length]:dwrite.length
$notify("🤖 "+"重写引用 ➟ "+"⟦"+subtag+"⟧","⛔️ 筛选参数: "+pfi+pfo,"☠️ 重写 rewrite 中已禁用以下"+nowrite+"个匹配项:"+"\n ⨷ "+dwrite.join("\n ⨷ "),rwrite_link ) $notify("🤖 "+"重写引用 ➟ "+"⟦"+subtag+"⟧","⛔️ 筛选参数: "+pfi+pfo,"☠️ 重写 rewrite 中已禁用以下"+nowrite+"个匹配项:"+"\n ⨷ "+dwrite.join("\n ⨷ "),rwrite_link )
} }
@@ -309,8 +313,8 @@ function HostNamecheck(content,parain,paraout){
} //for j } //for j
hname="hostname="+nname.join(", "); hname="hostname="+nname.join(", ");
// $notify(hname,dname) // $notify(hname,dname)
if(dname.length>0){ if(dname.length>0 && Pntf0!=0){
if(paraout || parain){ if(paraout || parain && Pntf0!=0){
var noname=dname.length<=10?emojino[dname.length]:dname.length var noname=dname.length<=10?emojino[dname.length]:dname.length
$notify("🤖 "+"重写引用 ➟ "+"⟦"+subtag+"⟧","⛔️ 筛选参数: "+pfihn+pfohn,"☠️ 主机名 hostname 中已删除以下"+noname+"个匹配项:"+"\n ⨷ "+dname.join(","),rwrite_link ) $notify("🤖 "+"重写引用 ➟ "+"⟦"+subtag+"⟧","⛔️ 筛选参数: "+pfihn+pfohn,"☠️ 主机名 hostname 中已删除以下"+noname+"个匹配项:"+"\n ⨷ "+dname.join(","),rwrite_link )
} }
@@ -343,7 +347,7 @@ function Rule_Handle(subs,Pout,Pin){
ply=Ppolicy; //策略组 ply=Ppolicy; //策略组
var nlist=[] var nlist=[]
var RuleK=["//","#",";"]; var RuleK=["//","#",";"];
if(Tout!="" && Tout!=null){ if(Tout!="" && Tout!=null){ // 有 out 参数时
var dlist=[]; var dlist=[];
for(var i=0;i<cnt.length;i++){ for(var i=0;i<cnt.length;i++){
cc=cnt[i] cc=cnt[i]
@@ -363,12 +367,13 @@ function Rule_Handle(subs,Pout,Pin){
} //else if cc } //else if cc
}//for cnt }//for cnt
var no=dlist.length<=10?emojino[dlist.length]:dlist.length var no=dlist.length<=10?emojino[dlist.length]:dlist.length
if(dlist.length>0){$notify("🤖 "+"分流引用 ➟ "+"⟦"+subtag+"⟧","⛔️ 禁用: "+ Tout,"☠️ 已禁用以下"+no+"条匹配规则:"+"\n ⨷ "+dlist.join("\n ⨷ "),rule_link) if(dlist.length>0 ){ if(Pntf0!=0){$notify("🤖 "+"分流引用 ➟ "+"⟦"+subtag+"⟧","⛔️ 禁用: "+ Tout,"☠️ 已禁用以下"+no+"条匹配规则:"+"\n ⨷ "+dlist.join("\n ⨷ "),rule_link)}
}else{$notify("🤖 "+"分流引用 ➟ "+"⟦"+subtag+"⟧","⛔️ 禁用: "+Tout,"⚠️ 未发现任何匹配项, 请检查参数或原始链接",nan_link)} }else{$notify("🤖 "+"分流引用 ➟ "+"⟦"+subtag+"⟧","⛔️ 禁用: "+Tout,"⚠️ 未发现任何匹配项, 请检查参数或原始链接",nan_link)}
if(Tin!="" && Tin!=null){ //有 in 跟 out 参数时 if(Tin!="" && Tin!=null){ //有 in 跟 out 参数时
if(nlist.length>0 ){ if(nlist.length>0 ){
var noin0=nlist.length<=10?emojino[nlist.length]:nlist.length var noin0=nlist.length<=10?emojino[nlist.length]:nlist.length
$notify("🤖 "+"分流引用 ➟ "+"⟦"+subtag+"⟧","✅ 保留:"+Tin,"🎯 已保留以下 "+noin0+"条匹配规则:"+"\n ⨁ "+nlist.join("\n ⨁ "),rule_link) if(Pntf0!=0){
$notify("🤖 "+"分流引用 ➟ "+"⟦"+subtag+"⟧","✅ 保留:"+Tin,"🎯 已保留以下 "+noin0+"条匹配规则:"+"\n ⨁ "+nlist.join("\n ⨁ "),rule_link)}
} else{$notify("🤖 "+"分流引用 ➟ "+"⟦"+subtag+"⟧","✅ 保留:"+Tin+",⛔️ 禁用: "+Tout,"⚠️ 筛选后剩余规则数为 0⃣ 条, 请检查参数及原始链接",nan_link) } else{$notify("🤖 "+"分流引用 ➟ "+"⟦"+subtag+"⟧","✅ 保留:"+Tin+",⛔️ 禁用: "+Tout,"⚠️ 筛选后剩余规则数为 0⃣ 条, 请检查参数及原始链接",nan_link)
} }
} else {// if Tin (No Tin) } else {// if Tin (No Tin)
@@ -392,7 +397,8 @@ function Rule_Handle(subs,Pout,Pin){
} // for cnt } // for cnt
if(nlist.length>0){ if(nlist.length>0){
var noin=nlist.length<=10?emojino[nlist.length]:nlist.length var noin=nlist.length<=10?emojino[nlist.length]:nlist.length
$notify("🤖 "+"分流引用 ➟ "+"⟦"+subtag+"⟧","✅ 保留:"+Tin,"🎯 已保留以下 "+noin+"条匹配规则:"+"\n ⨁ "+nlist.join("\n ⨁ "),rule_link) if(Pntf0!=0){
$notify("🤖 "+"分流引用 ➟ "+"⟦"+subtag+"⟧","✅ 保留:"+Tin,"🎯 已保留以下 "+noin+"条匹配规则:"+"\n ⨁ "+nlist.join("\n ⨁ "),rule_link)}
} else{$notify("🤖 "+"分流引用 ➟ "+"⟦"+subtag+"⟧","✅ 保留:"+Tin,"⚠️ 筛选后剩余规则数为 0⃣ 条, 请检查参数及原始链接",nan_link)} } else{$notify("🤖 "+"分流引用 ➟ "+"⟦"+subtag+"⟧","✅ 保留:"+Tin,"⚠️ 筛选后剩余规则数为 0⃣ 条, 请检查参数及原始链接",nan_link)}
return [...dlist,...nlist]; return [...dlist,...nlist];
} else { //if Tin } else { //if Tin
@@ -647,16 +653,24 @@ function Scheck(content,param){
//节点过滤,使用+连接多个关键词(逻辑"或"):in 为保留out 为排除, "与"逻辑请用符号"."连接 //节点过滤,使用+连接多个关键词(逻辑"或"):in 为保留out 为排除, "与"逻辑请用符号"."连接
function Filter(servers,Pin,Pout){ function Filter(servers,Pin,Pout){
var Nlist=[]; var Nlist=[];
var Delist=[] var Delist=[];
var Nname=[]
for(var i=0;i<servers.length;i++){ for(var i=0;i<servers.length;i++){
if(Scheck(servers[i],Pin)!=0 && Scheck(servers[i],Pout)!=1){ if(Scheck(servers[i],Pin)!=0 && Scheck(servers[i],Pout)!=1){
Nlist.push(servers[i]) Nlist.push(servers[i])
Nname.push(servers[i].replace(/ /g,"").split("tag=")[1])
}else{Delist.push(servers[i].replace(/ /g,"").split("tag=")[1])} //记录未被保留节点 }else{Delist.push(servers[i].replace(/ /g,"").split("tag=")[1])} //记录未被保留节点
}//for }//for
if(Pntf0!=0 && Delist.length>=1){//通知部分 if(Pntf0==1 && Delist.length>=1){//通知部分
var no= Delist.length<=10? emojino[ Delist.length]:Delist.length ; var no= Delist.length<=10? emojino[ Delist.length]:Delist.length ;
$notify("👥 引用"+"⟦"+subtag+"⟧"+" 开始节点筛选","🕹 筛选关键字: "+pfi+pfo, "☠️ 已删除以下 "+no+"个节点\n"+" ⨁ "+Delist.join(", "),sub_link); var no1= Nlist.length<=10? emojino[ Nlist.length]:Nlist.length ;
} if(Pin && no1>0){ //有 in 参数就通知保留部分
$notify("👥 引用"+"⟦"+subtag+"⟧"+" 开始节点筛选","🕹 筛选关键字: "+pfi+pfo, "☠️ 已保留以下 "+no1+"个节点\n"+Nname.join(", "),sub_link);
}else if(Pout && no>0){
$notify("👥 引用"+"⟦"+subtag+"⟧"+" 开始节点筛选","🕹 筛选关键字: "+pfi+pfo, "☠️ 已删除以下 "+no+"个节点\n"+Delist.join(", "),sub_link);
}
}else if(no1==0){ //无剩余节点时强制通知
$notify("‼️ ⟦"+subtag+"⟧"+"筛选后节点数为0⃣","⚠️ 请自行检查原始链接以及筛选参数", link0, sub_link);}
return Nlist return Nlist
} }