76 lines
2.3 KiB
Python
76 lines
2.3 KiB
Python
# coding=utf-8
|
|
import time
|
|
import logging
|
|
import sys
|
|
import os
|
|
import asyncio
|
|
|
|
project_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
|
|
if project_root not in sys.path:
|
|
sys.path.append(project_root)
|
|
|
|
from WeiXin import WxUtil
|
|
from WeiXin.WxUtil import analyze_chat_image
|
|
|
|
# 配置日志
|
|
log_dir = WxUtil.LOG_DIR
|
|
if not os.path.exists(log_dir):
|
|
os.makedirs(log_dir)
|
|
|
|
logging.basicConfig(
|
|
level=logging.INFO,
|
|
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
|
handlers=[
|
|
logging.FileHandler(os.path.join(log_dir, "T2_GetHistory.log"), encoding='utf-8'),
|
|
logging.StreamHandler()
|
|
]
|
|
)
|
|
logger = logging.getLogger("T2_GetHistory")
|
|
|
|
async def get_history(target_name="对方"):
|
|
# 运行前清理 Logs 和 Output
|
|
WxUtil.setup_script_environment()
|
|
|
|
logger.info("开始执行 T2: 获取当前屏幕对话历史...")
|
|
|
|
d = WxUtil.connect_device()
|
|
if not d:
|
|
return
|
|
|
|
# 截图
|
|
screenshot_dir = WxUtil.OUTPUT_DIR
|
|
if not os.path.exists(screenshot_dir):
|
|
os.makedirs(screenshot_dir)
|
|
|
|
timestamp = time.strftime("%Y%m%d_%H%M%S")
|
|
filename = f"T2_history_{timestamp}.jpg"
|
|
save_path = os.path.join(screenshot_dir, filename)
|
|
|
|
try:
|
|
d.screenshot(save_path)
|
|
logger.info(f"截图已保存: {save_path}")
|
|
|
|
analyzed_filename = f"T2_history_{timestamp}_analyzed.jpg"
|
|
analyzed_path = os.path.join(screenshot_dir, analyzed_filename)
|
|
|
|
# 调用 WxUtil 中的分析函数
|
|
dialogue_log, input_box = await analyze_chat_image(save_path, analyzed_path, device=d, target_name=target_name)
|
|
|
|
logger.info("✅ T2 识别结果:")
|
|
if dialogue_log:
|
|
for log in dialogue_log:
|
|
print(log) # 打印到控制台
|
|
else:
|
|
logger.info("未提取到对话内容或当前屏幕无对话气泡。")
|
|
|
|
# 检查是否触发了转换
|
|
if isinstance(dialogue_log, list) and any("[正在转换语音...]" in str(msg) for msg in dialogue_log):
|
|
logger.info("检测到语音正在转文字,建议等待转换完成后重新运行 T2 以获取完整内容。")
|
|
return
|
|
|
|
except Exception as e:
|
|
logger.error(f"❌ T2 执行失败: {e}")
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(get_history())
|