79 lines
2.1 KiB
Python
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()
|