+
Skip to content
/ ND Public

ND(Node classification),自动分类节点,自动识别节点关键词,提取出国家、地区元素并仅保留此部分;重复节点将自动添加序号并排序。声明:是AI写的,感觉有用。

Notifications You must be signed in to change notification settings

yzh118/ND

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

Node classification

ND(Node classification)节点分类,自动分类节点,自动识别节点关键词,提取出国家、地区元素并仅保留此部分;重复节点将自动添加序号并排序。声明:是AI写的,感觉有用。

使用说明

一、自动分类

操作方法:仅需填入在配置链接的别名部分中含有国家、地区信息的节点配置链接即可,由程序自动操作分类。

  • 如何实现:

内置了 countryKeywords 国家信息数据库,或是敏感地区、争议地区信息数据库 disputedRegionsMap ;通过识别函数 extractRegionFromAlias(alias) 匹配原配置链接中的别名(remarks)。最后通过 replaceAlias(line, region, index) 替换函数替换原配置链接别名部分,为国家/地区+序号

  • 国家信息数据库 countryKeywords
// 国家和地区关键词库
const countryKeywords = [
  "中国", "中国大陆", "中国香港", "香港", "澳门", "台湾", "台湾省", "台湾地区",
  "阿富汗", "阿尔巴尼亚", "阿尔及利亚", "安道尔", "安哥拉",
  "安提瓜和巴布达", "阿根廷", "亚美尼亚", "澳大利亚", "奥地利",
  "阿塞拜疆", "巴哈马", "巴林", "孟加拉国", "巴巴多斯", "白俄罗斯", "比利时",
  "伯利兹", "贝宁", "不丹", "玻利维亚", "波斯尼亚和黑塞哥维那", "博茨瓦纳",
  "巴西", "文莱", "保加利亚", "布基纳法索", "布隆迪",
  "柬埔寨", "喀麦隆", "加拿大", "佛得角", "中非共和国", "乍得", "智利", "中国台湾",
  "哥伦比亚", "科摩罗", "刚果(布)", "刚果(金)", "哥斯达黎加",
  "克罗地亚", "古巴", "塞浦路斯", "捷克", "丹麦",
  "吉布提", "多米尼加", "多米尼加共和国", "厄瓜多尔", "埃及",
  "萨尔瓦多", "赤道几内亚", "厄立特里亚", "爱沙尼亚", "埃塞俄比亚",
  "斐济", "芬兰", "法国", "加蓬", "冈比亚", "格鲁吉亚",
  "德国", "加纳", "希腊", "格林纳达", "危地马拉", "几内亚", "几内亚比绍",
  "圭亚那", "海地", "洪都拉斯", "匈牙利", "冰岛",
  "印度", "印度尼西亚", "伊朗", "伊拉克", "爱尔兰", "以色列",
  "意大利", "牙买加", "日本", "约旦", "哈萨克斯坦",
  "肯尼亚", "基里巴斯", "韩国", "科威特", "吉尔吉斯斯坦",
  "老挝", "拉脱维亚", "黎巴嫩", "莱索托", "利比里亚",
  "利比亚", "列支敦士登", "立陶宛", "卢森堡", "马其顿",
  "马达加斯加", "马拉维", "马来西亚", "马尔代夫", "马里",
  "马耳他", "马绍尔群岛", "毛里塔尼亚", "毛里求斯", "墨西哥",
  "密克罗尼西亚", "摩尔多瓦", "摩纳哥", "蒙古", "黑山",
  "摩洛哥", "莫桑比克", "缅甸", "纳米比亚", "瑙鲁",
  "尼泊尔", "荷兰", "新西兰", "尼加拉瓜", "尼日尔",
  "尼日利亚", "北马其顿", "挪威", "阿曼", "巴基斯坦",
  "帕劳", "巴拿马", "巴布亚新几内亚", "巴拉圭", "秘鲁",
  "菲律宾", "波兰", "葡萄牙", "卡塔尔", "罗马尼亚",
  "俄罗斯", "卢旺达", "圣基茨和尼维斯", "圣卢西亚",
  "圣文森特和格林纳丁斯", "萨摩亚", "圣马力诺", "圣多美和普林西比",
  "沙特阿拉伯", "塞内加尔", "塞尔维亚", "塞舌尔",
  "塞拉利昂", "新加坡", "斯洛伐克", "斯洛文尼亚",
  "所罗门群岛", "索马里", "南非", "南苏丹", "西班牙",
  "斯里兰卡", "苏丹", "苏里南", "斯威士兰", "瑞典",
  "瑞士", "叙利亚", "塔吉克斯坦", "坦桑尼亚", "泰国",
  "多哥", "汤加", "特立尼达和多巴哥", "突尼斯", "土耳其",
  "土库曼斯坦", "图瓦卢", "乌干达", "乌克兰", "阿拉伯联合酋长国",
  "英国", "美国", "乌拉圭", "乌兹别克斯坦", "瓦努阿图",
  "梵蒂冈", "委内瑞拉", "越南", "也门", "赞比亚",
  "津巴布韦"
];
  • 地区数据库 disputedRegionsMap
// 受争议地区映射
const disputedRegionsMap = {
  "台湾省": "台湾",
  "台湾地区": "台湾",
  "台湾": "台湾",
  "香港特别行政区": "香港",
  "香港": "香港",
  "澳门特别行政区": "澳门",
  "澳门": "澳门",
  "西藏自治区": "中国",
  "新疆维吾尔自治区": "中国",
  "钓鱼岛": "中国",
  "南海诸岛": "中国"
};
  • 识别函数 extractRegionFromAlias(alias) 详解
function extractRegionFromAlias(alias) {
  const aliasLower = alias.toLowerCase(); // 小写匹配,防止大小写不一致

  // 优先匹配模糊映射表
  for (const [key, val] of Object.entries(disputedRegionsMap)) {
    if (aliasLower.includes(key.toLowerCase())) return val;
  }

  // 再匹配国家/地区关键词
  for (const keyword of countryKeywords) {
    if (aliasLower.includes(keyword.toLowerCase())) return keyword;
  }

  // 匹配不到就返回“未知”
  return "未知";
}
  • 替换函数 replaceAlias(line, region, index) 详解
function replaceAlias(line, region, index) {
  const lastHashIndex = line.lastIndexOf('#');
  const suffix = index > 1 ? index : '';
  const finalAlias = region + suffix;

  if (lastHashIndex === -1) {
    return line + '#' + encodeURIComponent(finalAlias);
  }
  const basePart = line.slice(0, lastHashIndex);
  return basePart + '#' + encodeURIComponent(finalAlias);
}

二、手动分组

手动分组操作流程为:

  1. 填入原始配置链接,别名部分是何内容无要求;
  2. 设置分组区间、各分组统一别名(自动添加序号),每行一个,示例:
1-4=香港
5-6=台湾

当然,不必统一设置为某一特定国家或地区,可以用任意字符来替换原别名、或填充空白别名。


三、部署

您可能需要入手一台便宜实惠的云服务器,建议您选择二五云,新用户可以使用一次性的9折优惠码:

1118

襄阳IPv6云,2h2g独立公网IPv6,每年仅需9.9。 大量低价、大带宽云服,都可以使用此优惠码!

About

ND(Node classification),自动分类节点,自动识别节点关键词,提取出国家、地区元素并仅保留此部分;重复节点将自动添加序号并排序。声明:是AI写的,感觉有用。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载