| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- # -*- coding: utf-8 -*-
- import os
- import yaml
- # 读取的 yaml 的文件名
- file_name = 'merge.yaml'
- # 过滤代理
- filter_proxy_group = ['HK',
- '香港',
- 'TW',
- '台湾',
- 'JP',
- '日本',
- '马来西亚',
- 'SG',
- '新加坡']
- # 创建 config.yaml 模版, 读出来的 proxies 和 proxy-groups 存到对应的地方, rules 不要了
- config_template = {
- "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": [],
- }
- def process_yaml_file():
- temp_data = []
- 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
- check_in_group = False
- for keyword in filter_proxy_group:
- if keyword in proxy['name']:
- check_in_group = True
- if not check_in_group:
- continue
- print('{}: {}'.format(file_name, proxy['name']))
- temp_data.append(proxy)
- sorted_proxies = sorted(temp_data, key=lambda x: x['name'] if 'name' in x else '')
- if temp_data:
- config_template['proxies'] = sorted_proxies
- # 创建 proxy-groups 中的 select 组,包含所有 proxies
- select_group = {
- "name": "GLOBAL",
- "type": "select",
- "proxies": [proxy['name'] for proxy in sorted_proxies]
- }
- config_template['proxy-groups'].append(select_group)
- if __name__ == '__main__':
- process_yaml_file()
- with open(f'config.yaml', 'w', encoding='utf-8') as file:
- yaml.dump(config_template, file, allow_unicode=True, default_flow_style=False)
- print('done!')
|