# -*- coding: utf-8 -*- import os import yaml # 读取的 yaml 的文件名 bitz_file_name = 'Bitz Net.yaml' xfltd_file_name = 'XFLTD.yaml' partiot_file_name = 'index.php.yaml' # 创建 config.yaml 模版, 读出来的 proxies 和 proxy-groups 存到对应的地方, rules 不要了 config_template = { "mixed-port": 7890, "allow-lan": True, "bind-address": "*", "mode": "rule", "log-level": "info", "external-controller": "127.0.0.1:9090", "secret": "", "dns": { "enable": False, "ipv6": False, "nameserver": [], "fallback": [] }, "proxies": [], "proxy-groups": [], } def process_bitz(): if not os.path.exists(bitz_file_name): return data = None with open(bitz_file_name, 'r', encoding='utf-8') as file: data = yaml.safe_load(file) if not data: return proxies = data['proxies'] proxy_groups = data['proxy-groups'] # print(proxies) # print(proxy_groups) # 下面开始处理 proxies 和 proxy-groups # 处理 proxies for proxy in proxies: config_template['proxies'].append(proxy) keywords_to_remove = ['自动选择', '故障转移'] group = {'name': 'Bitz Net', 'type': 'select', 'proxies': []} for proxy_group in proxy_groups: if proxy_group['name'] != 'Bitz Net': continue for proxy in proxy_group['proxies']: if any(keyword in proxy for keyword in keywords_to_remove): continue group['proxies'].append(proxy) if not group['proxies']: return config_template['proxy-groups'].append(group) def process_xfltd(): if not os.path.exists(xfltd_file_name): return data = None with open(xfltd_file_name, 'r', encoding='utf-8') as file: data = yaml.safe_load(file) if not data: return proxies = data['proxies'] proxy_groups = data['proxy-groups'] # print(proxies) # print(proxy_groups) # 处理 proxies for proxy in proxies: if '剩余流量' in proxy['name'] or '套餐到期' in proxy['name']: continue config_template['proxies'].append(proxy) # 处理 proxy-groups keywords_to_remove = ['自动选择', '故障转移', '剩余流量', '套餐到期'] group = {'name': 'XFLTD', 'type': 'select', 'proxies': []} for proxy_group in proxy_groups: if proxy_group['name'] != 'XFLTD': continue for proxy in proxy_group['proxies']: if any(keyword in proxy for keyword in keywords_to_remove): continue group['proxies'].append(proxy) if not group['proxies']: return config_template['proxy-groups'].append(group) def process_partiot(): if not os.path.exists(partiot_file_name): return data = None with open(partiot_file_name, 'r', encoding='utf-8') as file: data = yaml.safe_load(file) if not data: return proxies = data['proxies'] proxy_groups = data['proxy-groups'] # 处理 proxies for proxy in proxies: config_template['proxies'].append(proxy) for proxy_group in proxy_groups: if proxy_group['name'] == 'select': proxy_group['name'] = 'partiot' config_template['proxy-groups'].append(proxy_group) break if __name__ == '__main__': process_xfltd() process_bitz() process_partiot() # print(config_template) with open('test.yaml', 'w', encoding='utf-8') as file: yaml.dump(config_template, file, allow_unicode=True, default_flow_style=False) print('done!')