使用Python打造全自动wx好友添加器:批量操作,高效省时的社交神器

在现代的数字营销和社交扩展中,自动化操作可以显著提高效率。尤其是wx这种广泛使用的即时通讯工具,很多用户有批量添加好友的需求,但手动操作费时费力。本教程将详细介绍如何使用 Python 开发一个自动化工具,帮助你批量添加wx好友。我们将通过一个图形用户界面 (GUI),结合 Excel 文件和微信自动化操作来实现这一需求。

项目概述

这个项目的核心目标是创建一个 Python 程序,可以自动从 Excel 文件中读取微信号和备注信息,然后通过自动化操作微信客户端,实现批量添加好友的功能。项目涉及几个关键技术,包括图形界面、Excel 文件处理和自动化操作等。

项目依赖

为了实现这个项目,我们需要以下 Python 库:

  1. Tkinter:Python 的标准 GUI 库,用于创建图形用户界面。
  2. uiautomation:Windows 自动化库,能与微信客户端进行交互。
  3. Pandas:用于处理 Excel 文件中的微信号和备注数据。
  4. logging:用于记录程序执行日志,便于调试和错误追踪。
  5. xlrd2:用于读取 Excel 文件(特别是 .xls 文件)。

安装依赖

首先,确保您已经安装了所需的库。可以通过以下命令在命令行中安装这些库:

pip install uiautomation pandas xlrd2 openpyxl

Tkinter 是 Python 的内置库,无需安装。

项目结构与功能设计

1. Tkinter 界面设计

我们使用 Tkinter 来设计图形用户界面 (GUI)。界面包括以下几个功能模块:

  • 微信路径选择:用户选择微信安装路径。
  • Excel 文件选择:用户选择包含微信号和备注的 Excel 文件。
  • 备注输入:允许用户输入好友备注信息。
  • 定时任务设置:用户可以选择定时启动任务。
  • 日志显示区域:显示任务执行过程中产生的日志。
1.1 构建 GUI 界面

通过 Tkinter 创建一个简单的主窗口,并添加各种输入框、按钮、文本框等组件。

import tkinter as tk
from tkinter import filedialog, messagebox, ttk, scrolledtext

class WeChatAutoApp:
    def __init__(self, master):
        self.master = master
        self.master.title("微信自动化工具")
        self.master.geometry("600x600+300+200")  # 设置窗口大小和位置
        self.master.configure(bg='#f0f0f0')  # 设置背景颜色

        # 创建组件
        self.create_widgets()

    def create_widgets(self):
        # 微信安装路径输入框
        self.wechat_path_label = ttk.Label(self.master, text="微信安装路径:", background='#f0f0f0')
        self.wechat_path_label.grid(row=0, column=0, padx=10, pady=10, sticky=tk.W)
        self.wechat_path_var = tk.StringVar()
        self.wechat_path_entry = ttk.Entry(self.master, width=50, textvariable=self.wechat_path_var)
        self.wechat_path_entry.grid(row=0, column=1, padx=10, pady=10)
        self.choose_wechat_button = ttk.Button(self.master, text="选择微信", command=self.choose_wechat_path)
        self.choose_wechat_button.grid(row=0, column=2, padx=10, pady=10)

        # 导入微信账号 Excel 文件
        self.excel_path_label = ttk.Label(self.master, text="导入微信账号Excel:", background='#f0f0f0')
        self.excel_path_label.grid(row=1, column=0, padx=10, pady=10, sticky=tk.W)
        self.excel_path_var = tk.StringVar()
        self.excel_path_entry = ttk.Entry(self.master, width=50, textvariable=self.excel_path_var)
        self.excel_path_entry.grid(row=1, column=1, padx=10, pady=10)
        self.choose_excel_button = ttk.Button(self.master, text="选择Excel", command=self.choose_excel_path)
        self.choose_excel_button.grid(row=1, column=2, padx=10, pady=10)

        # 备注文本框
        self.remarks_label = ttk.Label(self.master, text="备注:", background='#f0f0f0')
        self.remarks_label.grid(row=2, column=0, padx=10, pady=10, sticky=tk.W)
        self.remarks_text = tk.Text(self.master, height=5, width=50)
        self.remarks_text.grid(row=2, column=1, padx=10, pady=10)

2. 处理 Excel 文件

在自动化操作前,我们需要读取包含微信号和备注信息的 Excel 文件。可以通过 Pandas 轻松读取这些数据,并进行后续处理。

2.1 读取 Excel 文件

假设 Excel 文件包含两列:微信号和备注。我们使用 pandas.read_excel 读取文件,并将数据存储为一个 DataFrame。

import pandas as pd

def read_excel_file(file_path):
    try:
        df = pd.read_excel(file_path)
        accounts = df['微信号'].tolist()  # 从 Excel 表格中读取微信号
        names = df['备注'].tolist()  # 读取备注信息
        return accounts, names
    except Exception as e:
        print(f"读取 Excel 文件出错: {e}")
        return [], []

3. 自动化操作微信

通过 uiautomation 库,我们可以模拟人工操作微信客户端,逐步执行添加好友的任务。

3.1 自动化与微信交互

首先,启动微信客户端,等待其加载完成,然后通过 uiautomation 库找到微信窗口和相应的控件,模拟点击和输入操作。

import uiautomation as auto
import subprocess
import time

def run_automation(wechat_path, accounts, names):
    # 启动微信客户端
    subprocess.Popen([wechat_path])
    time.sleep(10)  # 等待微信加载完成

    # 查找微信主窗口
    wechat_window = auto.WindowControl(searchDepth=1, ClassName='WeChatMainWndForPC', Name='微信')

    for account, name in zip(accounts, names):
        try:
            # 点击通讯录
            contacts_button = wechat_window.ButtonControl(Name='通讯录')
            contacts_button.Click()
            time.sleep(1)

            # 点击添加朋友
            add_friend_button = wechat_window.ButtonControl(Name='添加朋友')
            add_friend_button.Click()
            time.sleep(1)

            # 输入微信号
            search_box = wechat_window.EditControl(Name='微信号/手机号')
            search_box.SetValue(account)
            time.sleep(1)

            # 查找联系人并添加
            contact_result = wechat_window.TextControl(Name=account)
            contact_result.Click()
            time.sleep(1)

            # 输入备注并发送请求
            add_to_contacts_button = wechat_window.ButtonControl(Name='添加到通讯录')
            add_to_contacts_button.Click()
            time.sleep(1)

            remarks_box = wechat_window.EditControl(Name='')
            remarks_box.SendKeys(name)
            time.sleep(1)

            confirm_button = wechat_window.ButtonControl(Name='确定')
            confirm_button.Click()
            time.sleep(1)

        except Exception as e:
            print(f"添加好友 {account} 失败: {e}")

4. 日志记录系统

为了更好地调试和追踪程序运行状态,日志记录是非常重要的。我们使用 logging 库,并通过自定义的日志处理器将日志输出到 GUI 界面的文本框中。

4.1 创建自定义日志处理器

自定义日志处理器继承自 logging.Handler,将日志消息写入 ScrolledText 控件中,实时显示。

import logging

class CustomHandler(logging.Handler):
    def __init__(self, log_text):
        super().__init__()
        self.log_text = log_text

    def emit(self, record):
        msg = self.format(record)
        self.log_text.configure(state='normal')
        self.log_text.insert(tk.END, msg + '\n')
        self.log_text.configure(state='disabled')
        self.log_text.yview(tk.END)

5. 定时任务

有时,用户希望程序在特定时间运行。我们通过 Tkinter 的 after 方法实现定时任务,用户可以选择任务在特定时间执行。

import datetime

def set_schedule(hour, minute, second):
    now = datetime.datetime.now()
    scheduled_time = now.replace(hour=int(hour), minute=int(minute), second=int(second))

    if scheduled_time < now:
        scheduled_time += datetime.timedelta(days=1)

    time_until_start = scheduled_time - now
    root.after(int(time_until_start.total_seconds() * 1000), start_automation)

6. 程序执行流程

整个程序的执行流程如下:

  1. 用户通过界面选择微信安装路径和 Excel 文件,输入备注信息。
  2. 用户可以手动启动任务,或者设置定时任务。
  3. 程序通过读取 Excel
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值