| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139 |
- # -*- 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!')
|