INNER CODE UNIT · Python
_merge_clash
ermaozi/get_subscribe · main.py:143
def _merge_clash(sources):
# 保留第一个可用来源的规则,将所有来源节点加入已有的节点选择组。
config = yaml.safe_load(sources[0][1])
proxies, identities, names, renamed = [], {}, set(), {}
names.update(group["name"] for group in config.get("proxy-groups", []))
names.update(["DIRECT", "REJECT", "REJECT-DROP", "PASS", "COMPATIBLE", "GLOBAL"])
for index, (source, content) in enumerate(sources):
for proxy in yaml.safe_load(content)["proxies"]:
identity = json.dumps({k: v for k, v in proxy.items() if k != "name"}, sort_keys=True, default=str)
if identity not in identities:
name = proxy["name"]
if name in names:
name = f"{source} | {name}"
original = name
suffix = 2
while name in names:
name = f"{original} ({suffix})"
suffix += 1