merge2config.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. # -*- coding: utf-8 -*-
  2. import os
  3. import copy
  4. import yaml
  5. file_name = 'merge.yaml'
  6. filter_proxy_group = ['HK', '香港', 'TW', '台湾', 'JP', '日本', '马来西亚', 'SG', '新加坡']
  7. web3_config_file = {
  8. "mixed-port": 7890,
  9. "allow-lan": True,
  10. "bind-address": "*",
  11. "mode": "rule",
  12. "log-level": "info",
  13. "external-controller": "0.0.0.0:9090",
  14. "secret": "",
  15. "dns": {
  16. "enable": False,
  17. "ipv6": False,
  18. "nameserver": [],
  19. "fallback": []
  20. },
  21. "proxies": [],
  22. "proxy-groups": [{"name": "GLOBAL", "type": "select", "proxies": []}],
  23. }
  24. depin_config_file = {
  25. "mixed-port": 7890,
  26. "allow-lan": True,
  27. "bind-address": "*",
  28. "mode": "rule",
  29. "log-level": "info",
  30. "external-controller": "0.0.0.0:9090",
  31. "secret": "",
  32. "dns": {
  33. "enable": False,
  34. "ipv6": False,
  35. "nameserver": [],
  36. "fallback": []
  37. },
  38. "proxies": [],
  39. "proxy-groups": [{"name": "GLOBAL", "type": "select", "proxies": []}],
  40. }
  41. def process_yaml_file():
  42. web3_proxy_list = []
  43. depin_proxy_list = []
  44. data = None
  45. with open(file_name, 'r', encoding='utf-8') as file:
  46. data = yaml.safe_load(file)
  47. if not data:
  48. print(f"Error reading {file_name}")
  49. return
  50. proxies = data['proxies']
  51. for proxy in proxies:
  52. if '剩余流量' in proxy['name']:
  53. continue
  54. if '套餐到期' in proxy['name']:
  55. continue
  56. # 默认将代理节点归类到 depin_proxy_list
  57. is_web3_proxy = False
  58. for keyword in filter_proxy_group:
  59. if keyword in proxy['name']:
  60. # 如果匹配到关键词,则归类到 web3_proxy_list
  61. web3_proxy_list.append(proxy)
  62. is_web3_proxy = True
  63. break
  64. if not is_web3_proxy:
  65. # 如果没有匹配到任何关键词,则归类到 depin_proxy_list
  66. depin_proxy_list.append(proxy)
  67. web3_proxy_list_sorted = sorted(web3_proxy_list, key=lambda x: x['name'] if 'name' in x else '')
  68. depin_proxy_list_sorted = sorted(depin_proxy_list, key=lambda x: x['name'] if 'name' in x else '')
  69. return web3_proxy_list_sorted, depin_proxy_list_sorted
  70. def create_config_file(web3_proxy_list_sorted, depin_proxy_list_sorted):
  71. web3_config_file['proxies'] = web3_proxy_list_sorted
  72. depin_config_file['proxies'] = depin_proxy_list_sorted
  73. for web3 in web3_proxy_list_sorted:
  74. web3_config_file['proxy-groups'][0]['proxies'].append(web3['name'])
  75. for depin in depin_proxy_list_sorted:
  76. depin_config_file['proxy-groups'][0]['proxies'].append(depin['name'])
  77. if __name__ == '__main__':
  78. web3_proxy_list_sorted, depin_proxy_list_sorted = process_yaml_file()
  79. create_config_file(web3_proxy_list_sorted, depin_proxy_list_sorted)
  80. with open(f'config_web3.yaml', 'w', encoding='utf-8') as file:
  81. yaml.dump(web3_config_file, file, allow_unicode=True, default_flow_style=False)
  82. with open(f'config_depin.yaml', 'w', encoding='utf-8') as file:
  83. yaml.dump(depin_config_file, file, allow_unicode=True, default_flow_style=False)
  84. print('done!')