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…

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

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

60分钟快速入门 PyTorch

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

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

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

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

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

Python基础入门_4函数

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

一文了解神经网络的基本原理

这是简单介绍神经网络的知识,并介绍一种特别的神经网络–多层感知器(Multi Layer Perceptron,MLP)。 翻译自 https://ujjwalkarn.me/2016/08/09/quick-intro-neural-networks/ 这篇文章并不涉及到对数学公式的推导,只是简单介绍了神经网络的结构和基本…

[Python技巧]是时候用 defaultdict 和 Counter 代替 dictionary 了

我们在采用 dict 的时候,一般都需要判断键是否存在,如果不存在,设置一个默认值,存在则采取其他的操作,但这个做法其实需要多写几行代码,那么是否有更高效的写法,可以减少代码,但可读…

[Github推荐]CVPR2019录用论文下载及可视化论文网站

简介 CVPR 是 IEEE Conference on Computer Vision and Pattern Recognition 的缩写,即 IEEE 国际计算机视觉与模式识别会议。该会议是由 IEEE 举办的计算机视觉和模式识别领域的顶级会议。 它是 IEEE 一年一度的学术性会议,会议的主要内容是计算机视觉…