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

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…