merge2config.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. # -*- coding: utf-8 -*-
  2. import os
  3. import yaml
  4. # 无分组版本, 需要
  5. # 读取的 yaml 的文件名
  6. file_name = 'merge.yaml'
  7. # 创建 config.yaml 模版, 读出来的 proxies 和 proxy-groups 存到对应的地方, rules 不要了
  8. config_template = {
  9. "mixed-port": 7890,
  10. "allow-lan": True,
  11. "bind-address": "*",
  12. "mode": "rule",
  13. "log-level": "info",
  14. "external-controller": "0.0.0.0:9090",
  15. "secret": "",
  16. "dns": {
  17. "enable": False,
  18. "ipv6": False,
  19. "nameserver": [],
  20. "fallback": []
  21. },
  22. "proxies": [],
  23. "proxy-groups": [],
  24. }
  25. def process_yaml_file():
  26. temp_data = []
  27. data = None
  28. with open(file_name, 'r', encoding='utf-8') as file:
  29. data = yaml.safe_load(file)
  30. if not data:
  31. print(f"Error reading {file_name}")
  32. return
  33. proxies = data['proxies']
  34. for proxy in proxies:
  35. if '剩余流量' in proxy['name']:
  36. continue
  37. if '套餐到期' in proxy['name']:
  38. continue
  39. print('{}: {}'.format(file_name, proxy['name']))
  40. temp_data.append(proxy)
  41. sorted_proxies = sorted(temp_data, key=lambda x: x['name'] if 'name' in x else '')
  42. if temp_data:
  43. config_template['proxies'] = sorted_proxies
  44. # 创建 proxy-groups 中的 select 组,包含所有 proxies
  45. select_group = {
  46. "name": "GLOBAL",
  47. "type": "select",
  48. "proxies": [proxy['name'] for proxy in sorted_proxies]
  49. }
  50. config_template['proxy-groups'].append(select_group)
  51. if __name__ == '__main__':
  52. process_yaml_file()
  53. with open(f'config.yaml', 'w', encoding='utf-8') as file:
  54. yaml.dump(config_template, file, allow_unicode=True, default_flow_style=False)
  55. print('done!')