农历新年马上又要来了,为了能给好友们送上真挚的祝福,曾经的我通常都是一条一条发/doge。编辑并发送一条大概需要5-10秒,1000个好友连续不停地发最少也需要一个半小时,费时费力还看不了春晚。
于是,今年我下决心要找到一个省时省力的群发方法,于是便有了下面的内容:
一、需求
1.群发对象:我的好友们
2.群发内容:定制化消息,新年祝福词+【我的名】+祝+【好友称呼】+新年祝福词
3.操作系统:windows10
4.所用程序:excel、notepad++、pycharm、微信电脑版V2.7.1.82
5.编程语言:python3.7
6.核心包:WechatPCAPI(网址:https://github.com/jwpl190/WechatPCAPI),微信PC版的API接口,可通过Python调用微信获取好友、群、公众号列表,并收发消息等功能。感谢作者提供了如此好用的微信接口调用,详情可访问上面的github地址。
7.工具下载:
(1)【WechatPCAPI作者提供】WechatPCAPI包+微信电脑版V2.7.1.82
链接:https://pan.baidu.com/s/1yADEwqht8hcTTjxpkW8DXw
提取码:rneo
(2)Pycharm CE版(免费):https://www.jetbrains.com/pycharm/download/download-thanks.html?code=PCC 点开链接弹出自动下载。
(3)excel和notepad++就不发了。
二、具体步骤
原理:提取微信好友信息,将好友微信号、祝福语等数据处理成字典格式,随后导入到python项目中,使用WechatPCAPI完成自动发送。
1.安装python3.7(详见:https://blog.csdn.net/weixin_43790276/article/details/89439352);
2.解压WechatPCAPI-master文件,将里面的WechatPCAPI.pyd文件拷贝到python3.7的根目录中,将WechatPCAPI.pyd文件和lib文件夹拷贝到根目录\Lib\site-packages中(以前没用过pyd文件,对这部分的理解稍微有些模糊,如有大佬懂pyd的调用,请带带我);
3.安装微信电脑版V2.7.1.82;
3.打开pycharm,new project,选中该项目创建的目录,随后在Existing interpreter中找到python3.7,如果没有点击右侧浏览,找到对应目录:
4.在pycharm中,File-New-Python File创建newyear_friendlist.py
复制下列代码:
# -*- coding: utf-8 -*-
from WechatPCAPI import WechatPCAPI
import time,os # 接收消息的回调函数,可自行定义 def on_message(message): print(message) def main(): # 初始化wx实例 wx_inst = WechatPCAPI(on_message=on_message) # 启动微信 目前仅支持微信V2.7.1.82 wx_inst.start_wechat(block=True) # 等待登陆成功,此时需要人为扫码登录微信 while not wx_inst.get_myself(): time.sleep(5) # 登录成功了 print(wx_inst.get_myself()) # 以下为发送,可以换成任何人的wx_id
if __name__ == '__main__': main()
运行该代码,如正常运行,会弹出微信登陆界面,扫码登陆,随后会在log中列出所有微信好友的信息:
其中,wx_id_search为好友微信号,wx_nickname为好友微信昵称,remark_name为好友备注;
5.好友、祝福语等数据处理:
将上述有wx_id这部分的信息复制到excel中,使用分列等方法进行数据清洗、好友称呼修改,祝福语的定制等批量操作(省略),处理为如下格式后,将其保存为friendlist.csv,并保存到该项目目录下;
6.使用notepad++打开friendlist.csv,同时,在该目录下新建一个txt,将其命名为friendlist.txt,并更改编码为UTF-8,把friendlist.csv中的文本全部复制到txt文件中。
7.批量调整下txt中的格式,最终格式如下:
8.在pycharm中,File-New-Python File创建newyear_send.py
复制下列代码:
# -*- coding: utf-8 -*- from WechatPCAPI import WechatPCAPI import time import os # 接收消息的回调函数,可自行定义 def on_message(message): print(message) def main(): # 初始化wx实例 wx_inst = WechatPCAPI(on_message=on_message) # 启动微信 目前仅支持微信V2.7.1.82 wx_inst.start_wechat(block=True) # 等待登陆成功,此时需要人为扫码登录微信 while not wx_inst.get_myself(): time.sleep(5) # 登录成功了 print(wx_inst.get_myself()) # 【关键】打开friendlist.txt,从该文件中加载群发数据,读取每行数据转换成字典格式,随后调用字典中的微信号和祝福信息完成信息的发送,sleep(1)代表每过1s发一条,可以自行修改。
# 一定要注意wx_id_search和text要和friendlist.txt中的键名一致,否则调用错误。
with open("friendlist.txt",encoding="utf-8") as f: for line in f: line_dic = eval(line) wx_inst.send_text(to_user=line_dic['wx_id_search'],msg=line_dic['text']) time.sleep(1) # 更新所有好友信息,数据会通过上面的回调函数返回 #wx_inst.update_frinds() if __name__ == '__main__': main()
9.关掉微信,运行newyear_send.py,扫码登陆微信后,祝福信息便一条一条地发送出去了。
注意:不管是微信昵称还是好友备注,在发祝福时可能都需要修改,比如我要给恩师“王大锤”(微信备注)发祝福,通常需要改成王老师更为恰当,因此少不了复杂的人力处理过程,但相比于一条一条手工发送,该方法已经能够节省不少人力。
简易的定制化祝福群发小程序至此结束,由于我习惯了使用excel进行数据处理所以未使用python,导致数据处理算是最复杂的过程了,欢迎大家共同进行优化。