Files
weixin-holiday-message/README.md

4.3 KiB

微信联系人祝福管理

一个用于管理微信联系人并发送节日祝福的 Web 应用。

功能特性

  • 联系人管理:添加、编辑、删除联系人
  • 分类标签:支持同事、好友、同学、老师、亲戚、客户、供应商等分类
  • 自定义内容:为每个联系人设置自定义备注
  • 祝福语管理:编辑和保存个性化祝福语
  • 批量操作:批量选择、批量删除
  • 搜索筛选:按姓名或分类快速查找

技术栈

  • 后端: Python Flask
  • 前端: HTML + Bootstrap 5 + JavaScript
  • 数据库: SQLite

快速开始

安装依赖

pip install flask pyautogui pyperclip

启动服务

python app.py

访问页面

打开浏览器访问: http://localhost:5000/static/contacts_manager.html

项目结构

├── app.py                 # Flask 后端 API
├── init_db.py            # 数据库初始化脚本
├── static/
│   └── contacts_manager.html  # 前端页面
└── contacts.db           # SQLite 数据库(不包含在仓库中)

API 接口

方法 路径 说明
GET /api/contacts 获取联系人列表
POST /api/contacts 创建联系人
PUT /api/contacts/:id 更新联系人
DELETE /api/contacts/:id 删除联系人
GET /api/stats 获取统计数据

PC 微信自动化操作

环境要求

  • Python 3.x
  • pyautogui: 屏幕截图和鼠标键盘操作
  • pyperclip: 剪贴板操作(用于中文输入)
  • ollama + glm-ocr 模型: OCR 文字识别

安装依赖

pip install pyautogui pyperclip

安装 ollama 和 OCR 模型:

# 安装 ollama (https://ollama.ai)
ollama pull glm-ocr

微信定位和搜索流程

1. 检查微信是否运行

import pyautogui

# 检查微信进程
import subprocess
result = subprocess.run(['tasklist'], capture_output=True, text=True)
if 'WeChat' in result.stdout:
    print('微信已在运行')

2. 关键坐标位置

功能 坐标位置 说明
搜索框 (118, 40) 左上角区域,点击后可输入搜索内容
搜索区域检测 (96,31)-(132,48) 用于 OCR 检测"搜索"字样
搜索结果区域 (125,96)-(463,149) 搜索后显示联系人列表的区域
聊天输入框 (600, 895) 底部消息输入区域

3. 搜索联系人示例

import pyautogui
import pyperclip
import time

def search_contact(name):
    # 点击搜索框
    pyautogui.click(118, 40)
    time.sleep(0.5)
    
    # 清空并输入中文(使用剪贴板)
    pyautogui.hotkey('ctrl', 'a')
    time.sleep(0.3)
    pyperclip.copy(name)
    pyautogui.hotkey('ctrl', 'v')
    time.sleep(1)
    
    # 按回车确认搜索
    pyautogui.press('enter')
    time.sleep(1)

# 使用示例
search_contact('夏骥')

4. OCR 检测搜索框

import pyautogui
import subprocess

def ocr_region(left, top, width, height, save_path='region.png'):
    # 截图指定区域
    region = (left, top, width, height)
    screenshot = pyautogui.screenshot(region=region)
    screenshot.save(save_path)
    
    # 使用 ollama 进行 OCR
    result = subprocess.run(
        ['ollama', 'run', 'glm-ocr', f'Text Recognition: ./{save_path}'],
        capture_output=True, text=True
    )
    return result.stdout.strip()

# 检测搜索框是否有"搜索"字样
text = ocr_region(96, 31, 36, 17)  # (132-96, 48-31)
if '搜索' in text:
    print('搜索框已就绪')

5. 发送消息示例

def send_message(message):
    # 点击聊天输入框
    pyautogui.click(600, 895)
    time.sleep(0.3)
    
    # 输入消息
    pyperclip.copy(message)
    pyautogui.hotkey('ctrl', 'v')
    time.sleep(0.5)
    
    # 发送
    pyautogui.press('enter')

# 使用示例
send_message('元宵节快乐!')

自动化脚本参数说明

参数 说明
搜索框位置 (118, 40) 微信窗口左上角搜索区域
搜索区域 OCR (96,31)-(132,48) 检测搜索框状态
结果区域 OCR (125,96)-(463,149) 检测搜索结果
输入框位置 (600, 895) 聊天窗口底部输入区域

注意: 以上坐标基于特定分辨率和微信窗口大小,实际使用时可能需要根据环境调整。

许可证

MIT License