互相送祝福,是我国的传统习俗,也是一种活跃气氛的方式。随着互联网的普及,人手一部手机的时代已经到来,聊天工具自然是一种必需品,以免费的姿态取代了短信祝福。
But,也越来越多的人收到了很多群发祝福,纷纷表示看看就好。个人感觉最大的原因就是,大家认为这是不够上心的祝福。那么作为计算机专业的童鞋,如何利用技术做到个性化群发,让小伙伴们收到够上心的祝福呢?
本文基于itchat插件写了一个需要你上点心的个性化群发脚本,能够让小伙伴们觉得你是够上心的,也能够让你看看是不是有一些好友已经不是好友了 T T...
之所有说需要你上点心的原因:有一件事情需要你日积月累去做,那就是给你的小伙伴好友们备注昵称。以下代码的备注规则如下:XXX-XXX-你想发送的称呼,例如:
1)某老板:XX公司-某总 --> 某总,新年好~
2)某员工:XX公司-小明 --> 小明,新年好~
3)某同学:小王 --> 小王,新年好~
其中,新年好这些祝福内容你可以自定义,重点是昵称要设置好。
代码如下:
# coding=utf8
import itchat
import time
## python2 需要加上如下语句:中文问题
# import sys
# from imp import reload
# reload(sys)
# sys.setdefaultencoding('utf-8')
#### 核心部分
## 安装 itchat: pip install itchat (本文是基于 Anaconda3 进行安装的)
## 获取所有的微信好友:users = itchat.get_friends(update=True)[0:]
## users 是一个list。list中的每个元素都是个字典,本文用到的键值如下:
### RemarkName:你给好友备注的昵称
### UserName:好友的用户名,是个主键
## itchat.send(msg, toUserName = user_name) ## 根据用户名发送给指定的好友
def happy_holiday():
itchat.auto_login(hotReload=True) ## 登录微信,要扫描登录
users = itchat.get_friends(update=True)[0:] ## 获取所有的微信好友
## 一些统计变量
num_total = 0
num_send = 0
## 直接遍历每个好友,然后根据自己的需求设置一些相关的约束条件,决定是否发送以及发送什么内容
for item in users:
if "-" in item['RemarkName']:
name = item['RemarkName'].split("-")[-1]
else:
name = item['RemarkName']
## 根据用户昵称发送祝福信息
## 没给备注的用户:其昵称默认为空字符串
## 发送消息时,获取键值为 UserName 的主键(获取指定的用户)
## 测试时,可发送给 filehelper 文件传输助手: toUserName='filehelper'
## itchat.send(u"祝{}2019除夕&&新年快乐哈,身体健康,顺顺利利~".format(name), toUserName='filehelper')
try:
num_total += 1
user_name = item['UserName']
name = name.split()[0] ## 排除一些奇奇怪怪的昵称以及空字符串, hhhh
if name != "": ##
num_send += 1
print("UserName = {}, name = {}".format(item['UserName'], name))
itchat.send(u"^^祝{}: 2019除夕&&新年快乐哈,身体健康,顺顺利利~".format(name), toUserName = user_name)
# else:
# print("UserName = {}, name = {}".format(item['UserName'], name))
# # itchat.send(u'%s %s %s'%("祝 ", item['NickName'], " 2018除夕&&新年快乐哈~"), toUserName = user_name)
time.sleep(2) ## 不要发得太频繁,以免发生一些不必要的麻烦
except Exception as e:
print("Not Send{}: {}".format(item['UserName'], e))
print(num_total, num_send)
### main program
if __name__ == '__main__':
print('... start ...')
happy_holiday()
print("... end ...")