wechat_msg_clicker/main.py
2026-04-23 18:39:49 +08:00

79 lines
2.1 KiB
Python

"""WeChat 消息自动点击器 — 入口
自动点击微信桌面端未读消息中的图片和文件,触发原始文件下载。
"""
import argparse
import signal
import sys
from wechat_clicker.config import Config
from wechat_clicker.automator import WeChatAutomator
from wechat_clicker.logger_setup import setup_logging
def main():
parser = argparse.ArgumentParser(
description="微信消息自动点击器 — 自动点击图片和文件触发下载"
)
parser.add_argument(
"--config", default="config.yaml",
help="配置文件路径 (默认: config.yaml)"
)
parser.add_argument(
"--dry-run", action="store_true",
help="试运行模式:只扫描不点击"
)
parser.add_argument(
"--once", action="store_true",
help="只执行一次扫描循环后退出"
)
parser.add_argument(
"--debug", action="store_true",
help="开启详细日志 (DEBUG 级别)"
)
parser.add_argument(
"--dump-ui", action="store_true",
help="输出微信 UI 元素树后退出 (调试用)"
)
parser.add_argument(
"--chat",
help="配合 --dump-ui 使用:进入指定聊天并 dump 消息区域元素树"
)
args = parser.parse_args()
# 加载配置
config = Config(args.config)
if args.debug:
config.override("logging.level", "DEBUG")
# 初始化日志
logger = setup_logging(config)
logger.info("微信自动点击器启动")
if args.dry_run:
logger.info("*** 试运行模式:只扫描不点击 ***")
# 优雅退出
def signal_handler(sig, frame):
logger.info("收到退出信号,正在关闭...")
sys.exit(0)
signal.signal(signal.SIGINT, signal_handler)
signal.signal(signal.SIGTERM, signal_handler)
# 创建自动化器
automator = WeChatAutomator(config, dry_run=args.dry_run)
# 执行
if args.dump_ui:
automator.dump_ui_tree(chat_name=args.chat)
elif args.once:
automator.run_once()
else:
automator.run()
if __name__ == "__main__":
main()