# -*- coding: utf-8 -*- import os import copy import yaml file_name = 'merge.yaml' filter_proxy_group = ['HK', '香港', 'TW', '台湾', 'JP', '日本', '马来西亚', 'SG', '新加坡'] web3_config_file = { "mixed-port": 7890, "allow-lan": True, "bind-address": "*", "mode": "rule", "log-level": "info", "external-controller": "0.0.0.0:9090", "secret": "", "dns": { "enable": False, "ipv6": False, "nameserver": [], "fallback": [] }, "proxies": [], "proxy-groups": [{"name": "GLOBAL", "type": "select", "proxies": []}], } depin_config_file = { "mixed-port": 7890, "allow-lan": True, "bind-address": "*", "mode": "rule", "log-level": "info", "external-controller": "0.0.0.0:9090", "secret": "", "dns": { "enable": False, "ipv6": False, "nameserver": [], "fallback": [] }, "proxies": [], "proxy-groups": [{"name": "GLOBAL", "type": "select", "proxies": []}], } def process_yaml_file(): web3_proxy_list = [] depin_proxy_list = [] data = None with open(file_name, 'r', encoding='utf-8') as file: data = yaml.safe_load(file) if not data: print(f"Error reading {file_name}") return proxies = data['proxies'] for proxy in proxies: if '剩余流量' in proxy['name']: continue if '套餐到期' in proxy['name']: continue # 默认将代理节点归类到 depin_proxy_list is_web3_proxy = False for keyword in filter_proxy_group: if keyword in proxy['name']: # 如果匹配到关键词,则归类到 web3_proxy_list web3_proxy_list.append(proxy) is_web3_proxy = True break if not is_web3_proxy: # 如果没有匹配到任何关键词,则归类到 depin_proxy_list depin_proxy_list.append(proxy) web3_proxy_list_sorted = sorted(web3_proxy_list, key=lambda x: x['name'] if 'name' in x else '') depin_proxy_list_sorted = sorted(depin_proxy_list, key=lambda x: x['name'] if 'name' in x else '') return web3_proxy_list_sorted, depin_proxy_list_sorted def create_config_file(web3_proxy_list_sorted, depin_proxy_list_sorted): web3_config_file['proxies'] = web3_proxy_list_sorted depin_config_file['proxies'] = depin_proxy_list_sorted for web3 in web3_proxy_list_sorted: web3_config_file['proxy-groups'][0]['proxies'].append(web3['name']) for depin in depin_proxy_list_sorted: depin_config_file['proxy-groups'][0]['proxies'].append(depin['name']) if __name__ == '__main__': web3_proxy_list_sorted, depin_proxy_list_sorted = process_yaml_file() create_config_file(web3_proxy_list_sorted, depin_proxy_list_sorted) with open(f'config_web3.yaml', 'w', encoding='utf-8') as file: yaml.dump(web3_config_file, file, allow_unicode=True, default_flow_style=False) with open(f'config_depin.yaml', 'w', encoding='utf-8') as file: yaml.dump(depin_config_file, file, allow_unicode=True, default_flow_style=False) print('done!')