main_booker.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import time
  2. import json
  3. from vs_types import GroupConfig
  4. from gco_wrapper import GCOWrapper
  5. from logger_setup import setup_app_logger
  6. # 导入拆分后的两个类
  7. from booker_builtin import BuiltinBookerGCO
  8. from booker_order import OrderBookerGCO
  9. def main():
  10. app_logger = setup_app_logger("Booker")
  11. app_logger.info("Booker Logger is ready! All VSC macros are hooked.")
  12. with open("config/config.json", "r", encoding="utf-8") as f:
  13. cfg_data = json.load(f)
  14. redis_conf = cfg_data.get('redis')
  15. groups_conf = cfg_data.get('group_list')
  16. wrappers = []
  17. for item in groups_conf:
  18. cfg = GroupConfig.from_json(item)
  19. if not cfg.enable: continue
  20. # === 核心:根据配置自动选择实现类 ===
  21. if cfg.booker.account_source == "order":
  22. gco_class = OrderBookerGCO
  23. app_logger.info(f"[{cfg.identifier}] Mode: ORDER (Bound)")
  24. else:
  25. gco_class = BuiltinBookerGCO
  26. app_logger.info(f"[{cfg.identifier}] Mode: BUILT-IN (Unbound)")
  27. wrapper = GCOWrapper(gco_class=gco_class, gco_cfg=cfg, redis_conf=redis_conf)
  28. wrapper.load()
  29. wrapper.start()
  30. wrappers.append(wrapper)
  31. app_logger.info(f"Successfully started {len(wrappers)} Booker groups. Press Ctrl+C to stop.")
  32. try:
  33. while True: time.sleep(1)
  34. except KeyboardInterrupt:
  35. app_logger.info("Shutting down Bookers...")
  36. for wrapper in wrappers: wrapper.stop()
  37. if __name__ == "__main__":
  38. main()