mirror of
https://github.com/KOP-XIAO/QuantumultX.git
synced 2026-01-25 17:15:09 +00:00
增加 $emoji 占位符
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
☑️ 资源解析器 ©𝐒𝐡𝐚𝐰𝐧 ⟦2021-01-14 10:15⟧
|
☑️ 资源解析器 ©𝐒𝐡𝐚𝐰𝐧 ⟦2021-01-14 22:45⟧
|
||||||
----------------------------------------------------------
|
----------------------------------------------------------
|
||||||
🛠 发现 𝐁𝐔𝐆 请反馈: @Shawn_KOP_bot
|
🛠 发现 𝐁𝐔𝐆 请反馈: @Shawn_KOP_bot
|
||||||
⛳️ 关注 🆃🅶 相关频道: https://t.me/QuanX_API
|
⛳️ 关注 🆃🅶 相关频道: https://t.me/QuanX_API
|
||||||
@@ -35,6 +35,8 @@
|
|||||||
❖ $type0/1/2/3/4/5 占位符,将节点类型(ss/ssr/vmess 等)作为可操作参数,如
|
❖ $type0/1/2/3/4/5 占位符,将节点类型(ss/ssr/vmess 等)作为可操作参数,如
|
||||||
∎ 𝐫𝐞𝐧𝐚𝐦𝐞=@|$type2
|
∎ 𝐫𝐞𝐧𝐚𝐦𝐞=@|$type2
|
||||||
∎ 样式分别为 "𝐬𝐬","𝐒𝐒","🅢🅢","🆂🆂","ⓢⓢ","🅂🅂"
|
∎ 样式分别为 "𝐬𝐬","𝐒𝐒","🅢🅢","🆂🆂","ⓢⓢ","🅂🅂"
|
||||||
|
❖ $emoji1/2 占位符,将节点地区emoji(🇭🇰 🇯🇵 等)作为可操作参数,如
|
||||||
|
∎ 𝐫𝐞𝐧𝐚𝐦𝐞=@「$emoji1」
|
||||||
⦿ 𝘀𝘂𝗳𝗳𝗶𝘅=-1/1 将节点类型做为前缀/后缀 添加在节点名中, 如 「𝗌𝗌」 「𝖵𝗆𝖾𝗌𝗌」
|
⦿ 𝘀𝘂𝗳𝗳𝗶𝘅=-1/1 将节点类型做为前缀/后缀 添加在节点名中, 如 「𝗌𝗌」 「𝖵𝗆𝖾𝗌𝗌」
|
||||||
⦿ 𝗱𝗲𝗹𝗿𝗲𝗴, 利用正则表达式来删除 "节点名" 中的字段(⚠️ 慎用)
|
⦿ 𝗱𝗲𝗹𝗿𝗲𝗴, 利用正则表达式来删除 "节点名" 中的字段(⚠️ 慎用)
|
||||||
⦿ 𝗿𝗲𝗽𝗹𝗮𝗰𝗲 参数, 正则替换节点中内容, 可用于重命名/更改加密方式等
|
⦿ 𝗿𝗲𝗽𝗹𝗮𝗰𝗲 参数, 正则替换节点中内容, 可用于重命名/更改加密方式等
|
||||||
@@ -88,7 +90,6 @@ resource_parser_url = https://raw.githubusercontent.com/KOP-XIAO/QuantumultX/mas
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//beginning 解析器正常使用,調試註釋此部分
|
//beginning 解析器正常使用,調試註釋此部分
|
||||||
|
|
||||||
let [link0, content0, subinfo] = [$resource.link, $resource.content, $resource.info]
|
let [link0, content0, subinfo] = [$resource.link, $resource.content, $resource.info]
|
||||||
@@ -97,8 +98,9 @@ const subtag = $resource.tag != undefined ? $resource.tag : "";
|
|||||||
content0 = content0.indexOf("DOCTYPE html") != -1 && link0.indexOf("github.com") != -1 ? ToRaw(content0) : content0 ;
|
content0 = content0.indexOf("DOCTYPE html") != -1 && link0.indexOf("github.com") != -1 ? ToRaw(content0) : content0 ;
|
||||||
//ends 正常使用部分,調試註釋此部分
|
//ends 正常使用部分,調試註釋此部分
|
||||||
|
|
||||||
|
|
||||||
var para = /^(http|https)\:\/\//.test(link0) ? link0 : content0.split("\n")[0];
|
var para = /^(http|https)\:\/\//.test(link0) ? link0 : content0.split("\n")[0];
|
||||||
var para1 = para.slice(para.indexOf("#") + 1).replace(/\$type/g,"node_type_para_prefix") //防止参数中其它位置也存在"#"
|
var para1 = para.slice(para.indexOf("#") + 1).replace(/\$type/g,"node_type_para_prefix").replace(/\$emoji/g,"node_emoji_flag_prefix") //防止参数中其它位置也存在"#"
|
||||||
var mark0 = para.indexOf("#") != -1 ? true : false; //是否有參數需要解析
|
var mark0 = para.indexOf("#") != -1 ? true : false; //是否有參數需要解析
|
||||||
var Pinfo = mark0 && para1.indexOf("info=") != -1 ? para1.split("info=")[1].split("&")[0] : 0;
|
var Pinfo = mark0 && para1.indexOf("info=") != -1 ? para1.split("info=")[1].split("&")[0] : 0;
|
||||||
var ntf_flow = 0;
|
var ntf_flow = 0;
|
||||||
@@ -267,7 +269,7 @@ function ResourceParse() {
|
|||||||
if (total.length > 0){
|
if (total.length > 0){
|
||||||
if (Psuffix==1 || Psuffix==-1) {total = Psuffix == 1? total.map(type_suffix):total.map(type_prefix)
|
if (Psuffix==1 || Psuffix==-1) {total = Psuffix == 1? total.map(type_suffix):total.map(type_prefix)
|
||||||
}
|
}
|
||||||
total = total.map(type_handle)
|
total = total.map(type_handle).map(emoji_prefix_handle)
|
||||||
total = TagCheck_QX(total).join("\n") //节点名检查
|
total = TagCheck_QX(total).join("\n") //节点名检查
|
||||||
if (Pcnt == 1) {$notify("解析后最终返回内容" , "节点数量: " +total.split("\n").length, total)}
|
if (Pcnt == 1) {$notify("解析后最终返回内容" , "节点数量: " +total.split("\n").length, total)}
|
||||||
total = Base64.encode(total) //强制节点类型 base64 加密后再导入 Quantumult X
|
total = Base64.encode(total) //强制节点类型 base64 加密后再导入 Quantumult X
|
||||||
@@ -402,6 +404,7 @@ function Type_Check(subs) {
|
|||||||
|
|
||||||
// 检查节点名字(重复以及空名)等QuanX 不允许的情形,以及多个空格等“不规范”方式
|
// 检查节点名字(重复以及空名)等QuanX 不允许的情形,以及多个空格等“不规范”方式
|
||||||
function TagCheck_QX(content) {
|
function TagCheck_QX(content) {
|
||||||
|
console.log(content)
|
||||||
var Olist = content.map(item =>item.trim().replace(/\s{2,}/g," "))
|
var Olist = content.map(item =>item.trim().replace(/\s{2,}/g," "))
|
||||||
//$notify("","",Olist)
|
//$notify("","",Olist)
|
||||||
var [Nlist, nmlist] = [ [], [] ]
|
var [Nlist, nmlist] = [ [], [] ]
|
||||||
@@ -463,6 +466,7 @@ function type_suffix(item) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//获取类型
|
||||||
function getnode_type(item,ind) {
|
function getnode_type(item,ind) {
|
||||||
if(item.trim()!="" && item.indexOf("tag=")!=-1) {
|
if(item.trim()!="" && item.indexOf("tag=")!=-1) {
|
||||||
ind = !/^(0|1|2|3|4|5)$/.test(ind) ? 6 : ind
|
ind = !/^(0|1|2|3|4|5)$/.test(ind) ? 6 : ind
|
||||||
@@ -481,6 +485,23 @@ function type_handle(item) {
|
|||||||
return item
|
return item
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 操作emoji占位符
|
||||||
|
function emoji_prefix_handle(item) {
|
||||||
|
if(item.indexOf("node_emoji_flag_prefix")!=-1) {
|
||||||
|
item = item.replace(/node_emoji_flag_prefix\d{0,1}/g,getnode_emoji(item,item.split("node_emoji_flag_prefix")[1][0]))
|
||||||
|
//console.log(item)
|
||||||
|
}
|
||||||
|
return item
|
||||||
|
}
|
||||||
|
|
||||||
|
// 获取emoji
|
||||||
|
function getnode_emoji(item,ind){
|
||||||
|
ind = !/^(1|2)$/.test(ind) ? 2 : ind
|
||||||
|
if(item.indexOf("tag=")!=-1) {
|
||||||
|
return get_emoji(ind,item.split("tag=")[1])[1]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// 用于某些奇葩用户不使用 raw 链接的问题
|
// 用于某些奇葩用户不使用 raw 链接的问题
|
||||||
function rawtest(cnt) {
|
function rawtest(cnt) {
|
||||||
var Preg0 = RegExp(".*js-file-line\".*?\<\/td\>", "i")
|
var Preg0 = RegExp(".*js-file-line\".*?\<\/td\>", "i")
|
||||||
@@ -1478,8 +1499,12 @@ function emoji_del(str) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//为节点名添加 emoji
|
//为节点名添加 emoji
|
||||||
function get_emoji(source, sname) {
|
function get_emoji(emojip, sname) {
|
||||||
var cnt = source;
|
var Lmoji = { "🏳️🌈": ["流量", "时间", "应急", "过期", "Bandwidth", "expire"], "🇦🇹": ["奥地利", "Austria", "维也纳"], "🇦🇺": ["AU", "Australia", "Sydney", "澳大利亚", "澳洲", "墨尔本", "悉尼" ,"土澳"], "🇧🇪": ["BE", "比利时"], "🇧🇬": ["保加利亚", "Bulgaria"], "🇧🇷": ["BR", "Brazil", "巴西", "圣保罗"], "🇨🇦": ["Canada","CANADA", "Waterloo", "加拿大", "蒙特利尔", "温哥华", "楓葉", "枫叶", "滑铁卢", "多伦多"], "🇨🇭": ["瑞士", "苏黎世", "Switzerland"], "🇨🇿": ["Czechia", "捷克"], "🇩🇪": ["DE", "German", "GERMAN", "德国", "德國", "法兰克福","京德"], "🇩🇰": ["丹麦"], "🇪🇸": ["ES", "西班牙", "Spain"], "🇪🇺": ["EU", "欧盟", "欧罗巴"], "🇫🇮": ["Finland", "芬兰", "赫尔辛基"], "🇫🇷": ["FR", "France", "法国", "法國", "巴黎"], "🇬🇧": ["UK", "GB", "England", "United Kingdom", "英国", "伦敦", "英"], "🇲🇴": ["MO", "Macao", "澳门", "澳門", "CTM"], "🇰🇿": ["哈萨克斯坦"], "🇭🇺": ["匈牙利", "Hungary"], "🇭🇰": ["HK", "Hongkong", "Hong Kong", "HongKong", "HONG KONG","香港", "深港", "沪港", "呼港", "HKT", "HKBN", "HGC", "WTT", "CMI", "穗港", "京港", "港"], "🇮🇩": ["Indonesia", "印尼", "印度尼西亚", "雅加达"], "🇮🇪": ["Ireland", "IRELAND", "爱尔兰", "愛爾蘭", "都柏林"], "🇮🇱": ["Israel", "以色列"], "🇮🇳": ["India", "INDIA","印度", "孟买", "Mumbai"], "🇰🇵": ["KP", "朝鲜"], "🇰🇷": ["KR", "Korea", "KOR", "韩国", "首尔", "韩", "韓"], "🇱🇻": ["Latvia", "Latvija", "拉脱维亚"], "🇲🇽️": ["MEX", "MX", "墨西哥"], "🇲🇾": ["MY", "Malaysia","MALAYSIA", "马来西亚", "馬來西亞", "吉隆坡"], "🇳🇱": ["NL", "Netherlands", "荷兰", "荷蘭", "尼德蘭", "阿姆斯特丹"], "🇵🇭": ["PH", "Philippines", "菲律宾", "菲律賓"], "🇷🇴": ["RO", "罗马尼亚"], "🇷🇺": ["RU", "Russia", "俄罗斯", "俄国", "俄羅斯", "伯力", "莫斯科", "圣彼得堡", "西伯利亚", "新西伯利亚", "京俄", "杭俄"], "🇸🇦": ["沙特", "迪拜"], "🇸🇪": ["SE", "Sweden"], "🇸🇬": ["SG", "Singapore","SINGAPORE", "新加坡", "狮城", "沪新", "京新", "泉新", "穗新", "深新", "杭新", "广新"], "🇹🇭": ["TH", "Thailand", "泰国", "泰國", "曼谷"], "🇹🇷": ["TR", "Turkey", "土耳其", "伊斯坦布尔"], "🇹🇼": ["TW", "Taiwan","TAIWAN", "台湾", "台北", "台中", "新北", "彰化", "CHT", "台", "HINET"], "🇺🇸": ["US", "USA", "America", "United States", "美国", "美", "京美", "波特兰", "达拉斯", "俄勒冈", "凤凰城", "费利蒙", "硅谷", "矽谷", "拉斯维加斯", "洛杉矶", "圣何塞", "圣克拉拉", "西雅图", "芝加哥", "沪美", "哥伦布", "纽约"], "🇻🇳": ["VN", "越南", "胡志明市"], "🇮🇹": ["Italy", "IT", "Nachash", "意大利", "米兰", "義大利"], "🇿🇦": ["South Africa", "南非"], "🇦🇪": ["United Arab Emirates", "阿联酋"], "🇯🇵": ["JP", "Japan","JAPAN", "日", "日本", "东京", "大阪", "埼玉", "沪日", "穗日", "川日", "中日", "泉日", "杭日", "深日", "辽日", "广日"], "🇦🇷": ["AR", "阿根廷"], "🇳🇴": ["Norway", "挪威", "NO"], "🇨🇳": ["CN", "China", "回国", "中国", "江苏", "北京", "上海", "广州", "深圳", "杭州", "徐州", "青岛", "宁波", "镇江", "back"] }
|
||||||
|
str1 = JSON.stringify(Lmoji)
|
||||||
|
aa = JSON.parse(str1)
|
||||||
|
bb = JSON.parse(str1.replace(/🇹🇼/g, " 🇨🇳"))
|
||||||
|
var cnt = emojip ==1? aa:bb;
|
||||||
var flag = 0;
|
var flag = 0;
|
||||||
for (var key in cnt) {
|
for (var key in cnt) {
|
||||||
dd = cnt[key]
|
dd = cnt[key]
|
||||||
@@ -1487,36 +1512,32 @@ function get_emoji(source, sname) {
|
|||||||
if (sname.indexOf(dd[i]) != -1) {
|
if (sname.indexOf(dd[i]) != -1) {
|
||||||
flag = 1;
|
flag = 1;
|
||||||
nname = key + " " + sname.replace(/[\uD83C][\uDDE6-\uDDFF][\uD83C][\uDDE6-\uDDFF]/g, "").trim(); // use regex to remove the original flag
|
nname = key + " " + sname.replace(/[\uD83C][\uDDE6-\uDDFF][\uD83C][\uDDE6-\uDDFF]/g, "").trim(); // use regex to remove the original flag
|
||||||
return nname
|
return [nname,key]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (flag == 0) { return "🏴☠️ " + sname.replace(/[\uD83C][\uDDE6-\uDDFF][\uD83C][\uDDE6-\uDDFF]/g, "").trim() }
|
if (flag == 0) { return ["🏴☠️ " + sname.replace(/[\uD83C][\uDDE6-\uDDFF][\uD83C][\uDDE6-\uDDFF]/g, "").trim(), "🏴☠️"] }
|
||||||
}
|
}
|
||||||
|
|
||||||
//emoji 处理
|
//emoji 处理
|
||||||
function emoji_handle(servers, Pemoji) {
|
function emoji_handle(servers, Pemoji) {
|
||||||
var nlist = []
|
var nlist = []
|
||||||
var ser0 = servers
|
var ser0 = servers
|
||||||
|
|
||||||
for (var i = 0; i < ser0.length; i++) {
|
for (var i = 0; i < ser0.length; i++) {
|
||||||
if (ser0[i].indexOf("tag=") != -1) {
|
if (ser0[i].indexOf("tag=") != -1) {
|
||||||
var oname = ser0[i].split("tag=")[1].trim();
|
var oname = ser0[i].split("tag=")[1].trim();
|
||||||
var hd = ser0[i].split("tag=")[0];
|
var hd = ser0[i].split("tag=")[0];
|
||||||
var nname = oname;//emoji_del(oname);
|
var nname = oname;//emoji_del(oname);
|
||||||
// Code: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2, Emoji: https://emojipedia.org/flags/
|
// Code: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2, Emoji: https://emojipedia.org/flags/
|
||||||
var Lmoji = { "🏳️🌈": ["流量", "时间", "应急", "过期", "Bandwidth", "expire"], "🇦🇹": ["奥地利", "Austria", "维也纳"], "🇦🇺": ["AU", "Australia", "Sydney", "澳大利亚", "澳洲", "墨尔本", "悉尼" ,"土澳"], "🇧🇪": ["BE", "比利时"], "🇧🇬": ["保加利亚", "Bulgaria"], "🇧🇷": ["BR", "Brazil", "巴西", "圣保罗"], "🇨🇦": ["Canada","CANADA", "Waterloo", "加拿大", "蒙特利尔", "温哥华", "楓葉", "枫叶", "滑铁卢", "多伦多"], "🇨🇭": ["瑞士", "苏黎世", "Switzerland"], "🇨🇿": ["Czechia", "捷克"], "🇩🇪": ["DE", "German", "GERMAN", "德国", "德國", "法兰克福","京德"], "🇩🇰": ["丹麦"], "🇪🇸": ["ES", "西班牙", "Spain"], "🇪🇺": ["EU", "欧盟", "欧罗巴"], "🇫🇮": ["Finland", "芬兰", "赫尔辛基"], "🇫🇷": ["FR", "France", "法国", "法國", "巴黎"], "🇬🇧": ["UK", "GB", "England", "United Kingdom", "英国", "伦敦", "英"], "🇲🇴": ["MO", "Macao", "澳门", "澳門", "CTM"], "🇰🇿": ["哈萨克斯坦"], "🇭🇺": ["匈牙利", "Hungary"], "🇭🇰": ["HK", "Hongkong", "Hong Kong", "HongKong", "HONG KONG","香港", "深港", "沪港", "呼港", "HKT", "HKBN", "HGC", "WTT", "CMI", "穗港", "京港", "港"], "🇮🇩": ["Indonesia", "印尼", "印度尼西亚", "雅加达"], "🇮🇪": ["Ireland", "IRELAND", "爱尔兰", "愛爾蘭", "都柏林"], "🇮🇱": ["Israel", "以色列"], "🇮🇳": ["India", "INDIA","印度", "孟买", "Mumbai"], "🇰🇵": ["KP", "朝鲜"], "🇰🇷": ["KR", "Korea", "KOR", "韩国", "首尔", "韩", "韓"], "🇱🇻": ["Latvia", "Latvija", "拉脱维亚"], "🇲🇽️": ["MEX", "MX", "墨西哥"], "🇲🇾": ["MY", "Malaysia","MALAYSIA", "马来西亚", "馬來西亞", "吉隆坡"], "🇳🇱": ["NL", "Netherlands", "荷兰", "荷蘭", "尼德蘭", "阿姆斯特丹"], "🇵🇭": ["PH", "Philippines", "菲律宾", "菲律賓"], "🇷🇴": ["RO", "罗马尼亚"], "🇷🇺": ["RU", "Russia", "俄罗斯", "俄国", "俄羅斯", "伯力", "莫斯科", "圣彼得堡", "西伯利亚", "新西伯利亚", "京俄", "杭俄"], "🇸🇦": ["沙特", "迪拜"], "🇸🇪": ["SE", "Sweden"], "🇸🇬": ["SG", "Singapore","SINGAPORE", "新加坡", "狮城", "沪新", "京新", "泉新", "穗新", "深新", "杭新", "广新"], "🇹🇭": ["TH", "Thailand", "泰国", "泰國", "曼谷"], "🇹🇷": ["TR", "Turkey", "土耳其", "伊斯坦布尔"], "🇹🇼": ["TW", "Taiwan","TAIWAN", "台湾", "台北", "台中", "新北", "彰化", "CHT", "台", "HINET"], "🇺🇸": ["US", "USA", "America", "United States", "美国", "美", "京美", "波特兰", "达拉斯", "俄勒冈", "凤凰城", "费利蒙", "硅谷", "矽谷", "拉斯维加斯", "洛杉矶", "圣何塞", "圣克拉拉", "西雅图", "芝加哥", "沪美", "哥伦布", "纽约"], "🇻🇳": ["VN", "越南", "胡志明市"], "🇮🇹": ["Italy", "IT", "Nachash", "意大利", "米兰", "義大利"], "🇿🇦": ["South Africa", "南非"], "🇦🇪": ["United Arab Emirates", "阿联酋"], "🇯🇵": ["JP", "Japan","JAPAN", "日", "日本", "东京", "大阪", "埼玉", "沪日", "穗日", "川日", "中日", "泉日", "杭日", "深日", "辽日", "广日"], "🇦🇷": ["AR", "阿根廷"], "🇳🇴": ["Norway", "挪威", "NO"], "🇨🇳": ["CN", "China", "回国", "中国", "江苏", "北京", "上海", "广州", "深圳", "杭州", "徐州", "青岛", "宁波", "镇江", "back"] }
|
|
||||||
if (Pemoji == 1) {
|
if (Pemoji == 1) {
|
||||||
str1 = JSON.stringify(Lmoji)
|
var nname = get_emoji(1, nname)[0]
|
||||||
aa = JSON.parse(str1)
|
|
||||||
var nname = get_emoji(aa, nname)
|
|
||||||
} else if (Pemoji == 2) {
|
} else if (Pemoji == 2) {
|
||||||
str1 = JSON.stringify(Lmoji)
|
var nname = get_emoji(2, nname)[0]
|
||||||
bb = JSON.parse(str1.replace(/🇹🇼/g, " 🇨🇳"))
|
|
||||||
var nname = get_emoji(bb, nname)
|
|
||||||
} else if (Pemoji == -1) {
|
} else if (Pemoji == -1) {
|
||||||
nname = emoji_del(oname);
|
nname = emoji_del(oname);
|
||||||
}
|
}
|
||||||
var nserver = hd + "tag=" + nname.replace(" ️", " ").trim()
|
var nserver = hd + "tag=" + nname.replace(" ", " ").trim()
|
||||||
nlist.push(nserver)
|
nlist.push(nserver)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user