[TOC] ##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)/total100)) print("女性好友:%.2f%%"%(float(female)/total100)) 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\n'%(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(msg['CreateTime'])), msg['User']['NickName'], msg['Text'] ), 'filehelper') # 回复给好友 return u'[自动回复]您好,我现在有事不在,一会再和您联系。\n已经收到您的的信息:%s\n' % (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(640640)/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, (xeach_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("1f\d.+") 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')