Files
wechat_crawler/get_history.py

70 lines
2.2 KiB
Python
Raw Permalink Normal View History

# -*- coding: utf-8 -*-
"""
获取文件传输助手历史记录并输出到控制台
运行前请确保1) 已安装依赖 pip install -e .
2) 电脑已登录微信 3.9 版本且主窗口已打开
"""
import sys
import os
_script_dir = os.path.dirname(os.path.abspath(__file__))
if _script_dir not in sys.path:
sys.path.insert(0, _script_dir)
from wxauto import WeChat
# 要获取历史的聊天(可改成其他好友/群名)
TARGET_CHAT = "文件传输助手"
# 向上加载更多页数每页约一批消息0 表示只取当前已加载的
LOAD_MORE_PAGES = 10
def format_msg(msg, index: int):
"""单条消息格式化为一行输出"""
msg_type = getattr(msg, "type", "text")
content = getattr(msg, "content", "")
sender = getattr(msg, "sender_remark", "") or getattr(msg, "sender", "")
content = (content or "").replace("\n", " ").strip()
if msg_type != "text":
content = f"[{msg_type}] " + (content or "(非文本)")
return f" {index}. [{sender}] {content}"
def main():
print("正在连接微信...")
try:
wx = WeChat()
except Exception as e:
print("连接失败,请确保:")
print(" 1. 已安装依赖: pip install -e .")
print(" 2. 微信 3.9 已登录并保持主窗口打开")
print(f" 错误: {e}")
return
print(f"正在切换到「{TARGET_CHAT}」并获取历史记录...\n")
if not wx.ChatWith(TARGET_CHAT):
print(f"无法切换到「{TARGET_CHAT}」,请检查名称是否正确")
return
# 向上滚动加载更多历史(可选)
if LOAD_MORE_PAGES > 0:
for i in range(LOAD_MORE_PAGES):
ret = wx.LoadMoreMessage(interval=0.3)
if not ret:
break
msgs = wx.GetAllMessage()
if not msgs:
print("当前没有获取到任何消息。")
return
# 列表通常是时间正序(从旧到新),直接按序输出
print(f"---------- 「{TARGET_CHAT}」 历史记录(共 {len(msgs)} 条)----------")
for i, msg in enumerate(msgs, 1):
print(format_msg(msg, i))
print("---------- 结束 ----------")
if __name__ == "__main__":
main()