Python与微信——itchat包

Posted 桥前石头

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python与微信——itchat包相关的知识,希望对你有一定的参考价值。

目录

itchat

一安装itchat

pip install itchat
pip install echarts-python

二登陆并向文件传输助手发消息

import itchat

# 登录
itchat.login()
# 发送消息,filehelper是文件传输助手
itchat.send(u'hello', 'filehelper')

二微信好友性别比例

# 获取好友列表
friends = itchat.get_friends(update=True)[0:]
print(friends)

# 初始化计数器,有男有女
male = female = other = 0

# 遍历这个列表,列表里第一位是自己,所以从“自己”之后计算
# Sex中1是男士,2是女士
# UserName, City, DisplayName, Province, NickName, KeyWord, RemarkName, HeadImgUrl, Alias,Sex
for i in friends[1:]:
    sex =i["Sex"]
    if sex ==1:
        male += 1
    elif sex == 2:
        female += 1
    else:
        other += 1

# 总数算上
total = len(friends[1:])

print("男性好友:%.2f%%"%(float(male)/total*100))
print("女性好友:%.2f%%"%(float(female)/total*100))
print("其他:%.2f%%"%(float(other)/total*100))

三微信设置自动回复

import itchat
import time


# 自动回复
# 封装好的装饰器,当接收到的消息是Text
@itchat.msg_register('Text')
def text_reply(msg):
    # 当消息不是由自己发出
    if not msg['FromUserName'] == myUserName:
        # 发送一条提示给文件助手
        itchat.send_msg(u'[%s]收到好友@%s的信息:%s
'%(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(msg['CreateTime'])),
                                                msg['User']['NickName'],
                                                msg['Text']
                                                ),
                        'filehelper')
        # 回复给好友
        return u'[自动回复]您好,我现在有事不在,一会再和您联系。
已经收到您的的信息:%s
' % (msg['Text'])


if __name__ == "__main__":
    itchat.auto_login()
    # 获取自己的UserName
    myUserName = itchat.get_friends(update=True)[0]['UserName']
    itchat.run()

四好友头像拼接

import itchat
import math
import PIL.Image as PImage
import os


Img_Dir = os.path.join(os.path.dirname(__file__), 'img')
all_img_dir = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'images')


itchat.auto_login()
friends = itchat.get_friends(update=True)[0:]
print('my friends====', friends)
user = friends[0]['UserName']


num = 0
for i in friends:
    img = itchat.get_head_img(userName=i['UserName'])
    fileImage = open(os.path.join(Img_Dir, str(num)+".png"), 'wb')
    fileImage.write(img)
    fileImage.close()
    num+=1

ls = os.listdir(Img_Dir)
each_size = int(math.sqrt(float(640*640)/len(ls)))
lines = int(640/each_size)
image = PImage.new('RGBA', (640,640))
x = 0
y = 0
for i in range(0, len(ls)+1):
    try:
        img = PImage.open(os.path.join(Img_Dir, str(i)+".png"))
    except IOError:
        print('Error')
    else:
        img = img.resize((each_size,  each_size),  PImage.ANTIALIAS)
        image.paste(img, (x*each_size,  y*each_size))
        x += 1
        if x == lines:
            x = 0
            y += 1

img_path = os.path.join(all_img_dir, 'all.png')
image.save(img_path)
itchat.send_image(img_path, 'filehelper')

五微信个性签名词云

import itchat
import re

# jieba分词
import jieba

# wordcloud词云
from wordcloud import WordCloud, ImageColorGenerator
import matplotlib.pyplot as plt
import PIL.Image as Image
import os
import numpy as np


# 先登录
itchat.login()

# 获取好友列表
friends = itchat.get_friends(update=True)[0:]

tlist = []
for i in friends:
    # 获取签名
    signature1 = i['Signature'].strip().replace('span', '').replace('class','').replace('emoji','')
    # 正则过滤emoji表情
    rep = re.compile("1fd.+")
    signature = rep.sub('', signature1)
    tlist.append(signature)

# 拼接字符串
text = ''.join(tlist)

# jieba分词
word_list_jieba = jieba.cut(text, cut_all=True)
wl_space_split = ' '.join(word_list_jieba)

# 图片路径
projiect_path = os.path.dirname(os.path.dirname(__file__))
img_dir = os.path.join(projiect_path, 'images')
alice_coloring = np.array(Image.open(os.path.join(img_dir, 'ciyun.jpg')))

# 选择字体存放路径
my_wordcloud = WordCloud(
    # 设置背景颜色
    background_color='white',
    max_words=2000,
    # 词云形状
    mask=alice_coloring,
    # 最大字号
    max_font_size=40,
    random_state=42,
    # 设置字体,不设置就会乱码
    font_path=os.path.join(img_dir, 'simsun.ttc')
).generate(wl_space_split)

image_colors = ImageColorGenerator(alice_coloring)
# 显示词云图片
plt.imshow(my_wordcloud.recolor(color_func=image_colors))
plt.imshow(my_wordcloud)
plt.axis('off')
plt.show()

# 保存照片,并发送给手机
my_wordcloud.to_file(os.path.join(img_dir, 'myciyun.png'))
itchat.send_image(os.path.join(img_dir, 'myciyun.png'), 'filehelper')

以上是关于Python与微信——itchat包的主要内容,如果未能解决你的问题,请参考以下文章

python的itchat不能用了

Python中的itchat模块使用大全

itchat 爬了爬自己的微信通讯录

python使用itchat库实现微信机器人

python恢复微信聊天记录

Python3.5+PyQt5多线程+itchat实现微信防撤回桌面版代码