generate_node.py 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. # -*- coding: utf-8 -*-
  2. # 生成代理节点, 并过滤
  3. import yaml
  4. file_name = 'merge.yaml'
  5. config_file = {
  6. "mixed-port": 7890,
  7. "allow-lan": True,
  8. "bind-address": "*",
  9. "mode": "rule",
  10. "log-level": "info",
  11. "external-controller": "0.0.0.0:9090",
  12. "secret": "",
  13. "dns": {
  14. "enable": False,
  15. "ipv6": False,
  16. "nameserver": [],
  17. "fallback": []
  18. },
  19. "proxies": [],
  20. "proxy-groups": [{"name": "GLOBAL", "type": "select", "proxies": []}],
  21. }
  22. def process_yaml_file():
  23. proxy_list = []
  24. with open(file_name, 'r', encoding='utf-8') as file:
  25. data = yaml.safe_load(file)
  26. if not data:
  27. print(f"Error reading {file_name}")
  28. return
  29. proxies = data['proxies']
  30. for proxy in proxies:
  31. if '剩余流量' in proxy['name']:
  32. continue
  33. if '套餐到期' in proxy['name']:
  34. continue
  35. if '有效期' in proxy['name']:
  36. continue
  37. proxy_list.append(proxy)
  38. proxy_list_sorted = sorted(proxy_list, key=lambda x: x['name'] if 'name' in x else '')
  39. return proxy_list_sorted
  40. def create_config_file(proxy_list_sorted):
  41. config_file['proxies'] = proxy_list_sorted
  42. for proxy_list in proxy_list_sorted:
  43. config_file['proxy-groups'][0]['proxies'].append(proxy_list['name'])
  44. if __name__ == '__main__':
  45. proxy_list_sorted = process_yaml_file()
  46. create_config_file(proxy_list_sorted)
  47. with open(f'config.yaml', 'w', encoding='utf-8') as file:
  48. yaml.dump(config_file, file, allow_unicode=True, default_flow_style=False)
  49. print('done!')