itchat 保存好友信息以及生成好友头像图片墙

2019 第 41 篇,总第 65 篇文章

本文大约 4000 字,阅读大约需要 12 分钟

最近简单运用 itchat 这个库来实现一些简单的应用,主要包括以下几个应用:

  • 统计保存好友的数量和信息

  • 统计和保存关注的公众号数量和信息

  • 简单生成好友头像的图片墙,利用一个第三方库生成马赛克风格的图片墙

itchat 的 github 项目地址如下,这是一个开源的微信个人接口:

https://github.com/littlecodersh/ItChat

这个库的安装也很简单,直接用 pip install itchat 即可安装

接下来就开始介绍如何利用这个库来实现上述操作。

1. 统计保存好友的数量和信息

首先是微信登录,简单的几行代码即可实现:

import itchat# 避免频繁扫描二维码登录
itchat.auto_login(hotReload=True)
itchat.dump_login_status()

运行这段代码后,就会弹出一个二维码,进行扫描登录,其中 hotReload=True 是保证不用每次运行程序都需要弹出二维码扫描登录。

然后是获取好友的信息:

we_friend = itchat.get_friends(update=True)[:]

这里 we_friend 就是保存了好友信息的一个字典,并且 we_friend[0] 是保存用户自己的信息,从we_friend[1] 开始才是真正的好友的信息,这里我们将主要保存以下信息:

key含义
NickName昵称
RemarkName备注
Sex性别
Province省份
City城市
Signature签名

保存好友的信息代码如下:

friends = we_friend[1:]
total_numbers = len(friends)
print('你的好友数量为: {}'.format(total_numbers))
friend_infos_dict = {}
for fri_info in friends:for key in friend_key:if friend_infos_dict.get(key, False):friend_infos_dict[key].append(fri_info[key])else:friend_infos_dict[key] = [fri_info[key]]
# 保存信息
fri_save_file_name = os.path.join(save_file_path, '好友信息.csv')
df = pd.DataFrame(friend_infos_dict)
df.to_csv(fri_save_file_name, sep=',')

其中 save_file_path 是指定保存好友信息文件的文件夹路径,

2. 保存公众号信息

获取公众号信息并保存的代码如下:

# 公众号获取的信息内容,分别是昵称、城市、城市、签名
mps_key = ['NickName', 'City', 'Province', 'Signature']
# 获取公众号信息
mps = itchat.get_mps(update=True)
mps_num = len(mps)
print('你关注的公众号数量: {}'.format(mps_num))mps_save_file_name = os.path.join(save_file_path, '公众号信息.csv')
mps_dict = {}
for mp in mps:for key in mps_key:if mps_dict.get(key, False):mps_dict[key].append(mp[key])else:mps_dict[key] = [mp[key]]df = pd.DataFrame(mps_dict)
df.to_csv(mps_save_file_name, sep=',', encoding='utf-8')

3. 生成好友头像图片墙

首先同样需要获取好友的头像,并保存到本地,代码如下:

def save_head_photo(save_photo_dir):itchat.auto_login(hotReload=True)itchat.dump_login_status()friends = itchat.get_friends(update=True)[1:]# 采集好友头像并保存到本地num = 0for fri in friends:img = itchat.get_head_img(userName=fri['UserName'])img_path = os.path.join(save_photo_dir, str(num) + '.jpg')if not os.path.exists(img_path):file_image = open(img_path, 'wb')file_image.write(img)file_image.close()num += 1print('完成好友头像保存至路径: ', save_photo_dir)

其中获取头像的函数是 itchat.get_head_image() 。

接着就是生成好友头像的图片墙,这里有两种方式,第一种是比较常规的生成方法。首先需要导入以下库

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

接着是设置画布大小及每行的头像数量,头像的大小,代码是:

 # 画布大小image_size = 1280# 算出每张图片的大小多少合适each_size = int(math.sqrt(float(image_size * image_size) / len(ls)))# 每行图片数量lines = int(image_size / each_size)print('each_size={}, lines={}'.format(each_size, lines))# 创建 1280*1280 的画布image = Image.new('RGBA', (image_size, image_size))

利用的是 pillow 库,安装方式是 pip install pillow 。这里我设置的画布大小就是 1280 * 1280。

然后就是读取保存的头像,并逐一粘贴到画布上,代码如下:

# 读取保存的好友头像图片
ls = os.listdir(save_photo_dir)
for i in range(0, len(ls)):try:img_path = os.path.join(save_photo_dir, str(i) + ".jpg")img = Image.open(img_path)except IOError:print("Error for image: {}".format(img_path))else:img = img.resize((each_size, each_size), Image.ANTIALIAS)image.paste(img, (x * each_size, y * each_size))  # 粘贴位置x += 1if x == lines:  # 换行x = 0y += 1image.save(os.path.join(os.getcwd(), "好友头像拼接图.jpg"))

第二种是参考了 当 Python 遇上你的微信好友 介绍的第三方库 photomosaic ,安装方法也很简单:

pip install photomosaic

这个第三方库可以生成蒙太奇马赛克风格的图片或者视频。

实现代码如下:

import photomosaic as pmdef create_photomosaic(save_photo_dir, background_photo):# 读取背景图片bg_photo = pm.imread(background_photo)# 读取好友头像图片,定义图片库pool = pm.make_pool(os.path.join(save_photo_dir, '*.jpg'))# 制作 50*50 的拼图马赛克image = pm.basic_mosaic(bg_photo, pool, (50, 50))# 保存结果pm.imsave('马赛克好友头像图片.jpg', image)

其中上述的四行代码也是最基本的使用代码,包括:

  • 选择背景图片

  • 定义图片库

  • 制作马赛克拼图

  • 保存图片

这里我简单选择了下面这张背景图片:

640?wx_fmt=jpeg

生成结果如下:

640?wx_fmt=jpeg

小结

简单运用 itchat 实现了以上三个小应用,实际上还可以有更多的应用,比如再根据好友信息分析性别比例、好友区域分布、签名的情感分析、关注的公众号类别、给特定的好友发送信息,以及制作微信机器人等。

本文的代码已经上传到 github 上:

https://github.com/ccc013/Python_Notes/tree/master/Projects/wechatProjects/itchat

也可以按如下操作获取代码:

1.关注公众号“机器学习与计算机视觉itchat",即可获取代码


参考:

  • 手把手教你用itchat统计好友信息,了解一下?

  • 当 Python 遇上你的微信好友

欢迎关注我的微信公众号--机器学习与计算机视觉,或者扫描下方的二维码,大家一起交流,学习和进步!

640?wx_fmt=jpeg

往期精彩推荐

机器学习系列
  • 初学者的机器学习入门实战教程!

  • 模型评估、过拟合欠拟合以及超参数调优方法

  • 常用机器学习算法汇总比较(完)

  • 常用机器学习算法汇总比较(上)

  • 机器学习入门系列(2)--如何构建一个完整的机器学习项目(一)

  • 特征工程之数据预处理(上)

Github项目 & 资源教程推荐
  • [Github 项目推荐] 一个更好阅读和查找论文的网站

  • [资源分享] TensorFlow 官方中文版教程来了

  • 必读的AI和深度学习博客

  • [教程]一份简单易懂的 TensorFlow 教程

  • [资源]推荐一些Python书籍和教程,入门和进阶的都有!

  • [Github项目推荐] 机器学习& Python 知识点速查表

  • [Github项目推荐] 推荐三个助你更好利用Github的工具

  • Github上的各大高校资料以及国外公开课视频

  • 这些单词你都念对了吗?顺便推荐三份程序员专属英语教程!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/408652.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

启动outlook时报错:mapi无法加载信息服务msncon.dll

今天这个Office2010 outlook搞的让人蛋疼,老是说启动outlook时报错:mapi无法加载信息服务msncon.dll。 百度了一下,如下解决方案: 安装路径为D:\NEW Windows7 File\office2010\Office14 在命令行中定位到outlook安装文件夹&#x…

快速入门Pytorch(1)--安装、张量以及梯度

2019 第 42 篇,总第 66 篇文章本文大约 9000 字,建议收藏阅读!这是翻译自官方的入门教程,教程地址如下:https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html虽然教程名字是 60 分钟入门&#xff0…

快速入门PyTorch(2)--如何构建一个神经网络

2019 第 43 篇,总第 67 篇文章本文大约 4600 字,阅读大约需要 10 分钟快速入门 PyTorch 教程第二篇,这篇介绍如何构建一个神经网络。上一篇文章:快速入门Pytorch(1)--安装、张量以及梯度本文的目录:3. 神经网络在 PyTo…

程序员的职业素养文摘

第1章 专业主义 第2章 说“不” 第3章 说“是” 第4章 编码 第5章 测试驱动开发 第6章 练习 第7章 验收测试 第8章 测试策略 第9章 时间管理 第10章 预估 第11章 压力 第12章 协作 第13章 团队与项目 第14章 辅导,学徒期与技艺转载于:https://www.cnblogs.com/smile…

快速入门PyTorch(3)--训练一个图片分类器和多 GPUs 训练

2019 第 44 篇,总第 68 篇文章本文大约14000字,建议收藏阅读快速入门 PyTorch 教程前两篇文章:快速入门Pytorch(1)--安装、张量以及梯度快速入门PyTorch(2)--如何构建一个神经网络这是快速入门 PyTorch 的第三篇教程也是最后一篇教程&#xf…

60分钟快速入门 PyTorch

PyTorch 是由 Facebook 开发,基于 Torch 开发,从并不常用的 Lua 语言转为 Python 语言开发的深度学习框架,Torch 是 TensorFlow 开源前非常出名的一个深度学习框架,而 PyTorch 在开源后由于其使用简单,动态计算图的特性…

【deep learning学习笔记】注释yusugomori的LR代码 --- LogisticRegression.cpp

模型实现代码&#xff0c;关键是train函数和predict函数&#xff0c;都很容易。 #include <iostream> #include <string> #include <math.h> #include "LogisticRegression.h" using namespace std;LogisticRegression::LogisticRegression(int si…

5月份 Github 上最热的十个 Python 项目,从Debug工具到AI水军、量化交易系统。

2019 年第 46 篇&#xff0c;总第 70 篇文章原文地址&#xff1a;https://medium.mybridge.co/python-open-source-for-the-past-month-v-may-2019-473e9f60c73f5 月份刚刚过去&#xff0c;之前看到了一篇介绍 5 月份的最热机器学习项目&#xff0c;刚好看到 Mybridge AI 博客又…

注册.NET Framework

C:\Windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe /i 转载于:https://www.cnblogs.com/qq1223558/p/3195092.html

[Github项目]基于PyTorch的深度学习网络模型实现

2019 年第 48 篇文章&#xff0c;总第 72 篇文章本文大约 1500 字&#xff0c;阅读大约需要 4 分钟今天主要分享两份 Github 项目&#xff0c;都是采用 PyTorch 来实现深度学习网络模型&#xff0c;主要是一些常用的模型&#xff0c;包括如 ResNet、DenseNet、ResNext、SENet等…

抽象类总结及练习

该篇文章只是说明抽象类的一个使用场景&#xff0c;由于小弟水平一般&#xff0c;如果有说的不对地方希望各位大牛们指出&#xff0c;也欢迎各位亲们补充。 什么是抽象类 用关键字abstract定义的类即为抽象类&#xff0c;且只能作为基类。 抽象类注意的地方 1、 用abstract定义…

Python基础入门_4函数

Python 基础入门前三篇&#xff1a; Python 基础入门–简介和环境配置Python基础入门_2基础语法和变量类型Python基础入门_3条件语句和迭代循环 第四篇内容&#xff0c;这次介绍下函数的基本用法&#xff0c;包括函数的定义、参数的类型、匿名函数、变量作用域以及从模块导入…