简介

还在因各种情侣节日不知道送对方什么礼物而感到苦恼吗?不如试试这个超浪漫的微信聊天词云!

整体思路主要为:

1. 利用模拟器找到备份文件

2. 解密文件并导出文本文件

3. 代码制作词云

前期准备:

一台Windows电脑,一台手机

具体步骤

1. 配置MUMU模拟器

直接点下面这个链接下载软件然后安装

MUMU模拟器下载地址

安装之后打开应该长下面这样(没有微信的Root Explorer)

然后点击右上角设置中心

打开root权限

直接桌面顶部搜索栏输入微信然后下载

打开你自己的手机根据:

安卓(我->设置->聊天->聊天记录迁移和备份->迁移->迁移到另一台手机或平板->仅迁移指定聊天记录)

IOS(我->设置->通用->聊天记录迁移和备份->迁移->迁移到另一台手机或平板->仅迁移指定聊天记录)

转移聊天记录,然后你的手机上会出现一个二维码

接下来打开你模拟器的微信扫一扫功能,然后扫刚才那个码就可以把聊天记录传到模拟器里了

传输完之后,下载Root Explorer(以下简称RE),老样子直接在搜索栏搜,如果搜不到的话打开内置浏览器上网上下一个也可以

然后打开你的RE,应该长下面这样

根据

从根目录/下开始,路径为:/data/data/com.tencent.mm/MicroMsg/<xxx>/EnMicroMsg.db,其中,<xxx>为一数字字母组成的字符串,因微信号不同而不同,EnMicroMsg.db就是我们的数据库文件了。

然后长按这个文件复制

然后粘贴到你的存储里的这个文件夹里

这样你应该就能在你自己的电脑里的文档中的MUMU共享文件夹中看到你的文件

2. 解密文件

微信对该数据库文件进行了加密,加密规则是:先对IMEIUIN进行拼接,然后利用MD5算法对拼接后的字符串进行转换,转换后的前7位字符为密码。

由于我们使用的是模拟器,所以IMEI为:1234567890ABCDEF

UIN是微信的用户信息号,你可以在模拟器中的RE根据以下路径找到:/data/data/com.tencent.mm/shared_prefs,然后直接用RE打开其中的system_config_prefs.xml,找到其中name为default_uin的标签所对应的value的值,就是UIN。

至此,我们已经拿到了IMEI和UIN的信息,打开这个网站MD5散列计算器然后把你的IMEI和UIN输入进去(UIN我乱输的,你们就输入你们的UIN就好) ,如果你的UIN前面有“-”或者“+”一定要输进去!!!然后得到的散列值前7位即为密钥

得到了密钥和文件我们还需要SQLcipher去访问里面的内容,下面是下载链接

链接:https://pan.baidu.com/s/1_eh6VxCu-CPfzXDVK7GueA 
提取码:3szk

打开SQLcipher,然后右上角Open Database,然后选中EnMicroMsg.db文件

输入刚才散列值的前7位

然后就打开了

找到"message"那个文件,然后导出为CSV文件

使用记事本打开“message.csv”文件并另存为 txt文件,并改为UTF-8编码!!! 

3. 制作词云

以下代码需要四个文件:

“chat_records.txt” 也就是我们刚才导出的那个文件,改成这个名字即可

“stopwords.txt” 可以从这里获取StopWords

“mywords.txt” 直接新建一个空白的txt文件就行

“picture.jpg” 这个是设定你的词云是什么形状的,一般来说只要是轮廓清晰就可以,这边提供一个模板,直接截图保存使用就可

以下就是完整代码,把上述文件和代码放在一个目录下,缺什么包直接“pip install + 包的名字”就可以了。

# coding: utf-8
import jieba
import re
import pandas as pd
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
from imageio import imreaddef load_file_segment():# Load the text file and segment wordsjieba.load_userdict(r"E:\Programming Project\Python\WordCloud\mywords.txt")# Load our own dictionarywith open(r"E:\Programming Project\Python\WordCloud\chat_records.txt",'r',encoding='utf-8') as f:# Open the filecontent = f.read()# Read the file content# Retain Chinese contentcontent = re.sub(r'[^\u4e00-\u9fa5]', '', content)segs = jieba.cut(content) # Segment the whole textsegment = [seg for seg in segs if 2 <= len(seg) <= 5 and seg != '\r\n']# Add results to list if the length of the segmented word is between 2-5, and is not a newline characterreturn segmentdef get_words_count_dict():segment = load_file_segment()# Get the segmented resultdf = pd.DataFrame({'segment':segment})# Convert segmented array to pandas DataFramestopwords = pd.read_csv(r"E:\Programming Project\Python\WordCloud\stopwords.txt", index_col=False, quoting=3, sep="\t", names=['stopword'], encoding="utf-8")# Load stop wordsdf = df[~df.segment.isin(stopwords.stopword)]# Exclude stop wordswords_count = df.groupby('segment')['segment'].size().reset_index(name='count')# Group by word, calculate the count of each wordwords_count = words_count.reset_index().sort_values(by="count",ascending=False)# Reset index to retain segment field and sort in descending order of countreturn words_countwords_count = get_words_count_dict()
# Get word countbimg = imread(r'E:\Programming Project\Python\WordCloud\picture.jpg')
# Read the template image for word cloud generationwordcloud = WordCloud(width=1080, height=1080,background_color='white',mask=bimg, font_path='simhei.ttf', max_words=10000, scale=10)
# Get WordCloud object, set the background color, image, font of the word cloud# If your background color is transparent, replace above two lines with these two
# bimg = imread('ai.png')
# wordcloud = WordCloud(background_color=None, mode='RGBA', mask=bimg, font_path='simhei.ttf')words = words_count.set_index("segment").to_dict()
# Convert words and frequencies to dictionary
wordcloud = wordcloud.fit_words(words["count"])
# Map the words and frequencies to the WordCloud object
bimgColors = ImageColorGenerator(bimg)
# Generate colors
plt.axis("off")
# Turn off the axes
plt.imshow(wordcloud.recolor(color_func=bimgColors))
# Apply colors
plt.show()

总结

这是一个相对比较简单的词云生成,具体想改参数可以参考代码里的注释,如果有任何问题欢迎在评论区讨论。

参考

Python 520情人节超强技能 导出微信聊天记录生成词云

【微信聊天记录制作词云】超详细保姆级教学!!!(详细步骤+代码)相关推荐

  1. 微信聊天记录制作词云图

    1 使用iTunes 备份iphone: 2在C:\Users\xxxx\AppData\Roaming\Apple Computer\MobileSync\Backup路径中找到备份文件夹 3打开备 ...

  2. vscode配置C/C++环境(超详细保姆级教学)

    大一上学期被学长安利了vscode,但是下载安装后不会配置,自己连查带问搞了七八个小时终于配置好了.后面身边很多同学也不会配,都来找我帮忙配,加上之前自己摸索着配的时候感觉网上没有详细又靠谱的教程,所 ...

  3. 监控摄像头通过OBS取流变身电脑摄像头(超详细保姆级教学)

    使用监控摄像头通过OBS取流变身电脑摄像头 小编这里的应用场景为 "使用摄像头作为线上会议摄像头进行取流",方便会议 使用到的软件工具:OBS Studio.VCL 系统环境:64 ...

  4. vueCli脚手架搭建和文件详解(超详细保姆级教学)

    一.找到希望创建项目的文件夹,进入终端 二.执行 vue create 文件夹名称 运行结果如下: 1.选择Manually select features ==> 手动选择特征(自己选择设置) ...

  5. Spring Boot入门(07):整合 MySQL 和 Druid数据源 | 全网最详细保姆级教学(两万字)

    作者:bug菌 博客:CSDN.掘金.infoQ.51CTO等 简介:CSDN/阿里云/华为云/51CTO博客专家,博客之星Top30,掘金年度人气作者Top40,51CTO年度博主Top12,掘金/ ...

  6. 玩客云搭配zerotier保姆级教学,保证学废

    文章目录 了解zerotier网站 设备如何添加zerotier 1. 玩客云设备 2. 安卓手机设备 3. 电脑设备 了解zerotier网站 什么是zerotier? ZeroTier 是一个基于 ...

  7. plt图片输出 python_利用Python制作词云,wordcloud神器你值得拥有

    相信许多人都看到过下面这样的词云图,词云图是一种很好的可视化工具,其作用主要是为了文本数据的视觉表示,既酷炫又能突出重点. 关于词云图的制作,网上能够搜集到很多的教程,许多都是利用了专用的工具,这些工 ...

  8. 利用python制作漂亮的词云图_利用python制作词云,wordcloud神器你值得拥有

    相信许多人都看到过下面这样的词云图,词云图是一种很好的可视化工具,其作用主要是为了文本数据的视觉表示,既酷炫又能突出重点. 关于词云图的制作,网上能够搜集到很多的教程,许多都是利用了专用的工具,这些工 ...

  9. 绿皮书——iOS导出微信聊天记录,并用python制作词云

    The Green-Book--iOS微信聊天词云 引言 目录 1.提取微信聊天记录 1.1 iTunes备份 1.2 解密备份文件 1.3 找到指定好友 1.4 导出为xlsx 2.python读取 ...

最新文章

  1. 腾讯云产业生态战略再升级,“4个100”与合作伙伴助力中小企业转型升级
  2. c1083 “tensorflow/python/framework/c pp_shape_inference.pb.h”
  3. Python语言学习 (七)1.1
  4. python pprint_如何美观地打印 Python 对象?这个标准库可以简单实现
  5. 前端知识点梳理(二)
  6. vue class绑定方式
  7. Date对象 IOS踩坑
  8. 个性艺术创意风采人物海报,psd分层模板
  9. 【实践】美团点评效果广告实验配置平台的设计与实现
  10. 如何引用XML文件生成C#类
  11. .netcore mvc docker环境jenkins一键部署(DevOps)
  12. 【ACL'21】弱标签的垃圾数据,也能变废为宝!
  13. 设计三极管放大电路有哪些技巧?尤其是假设
  14. Delphi控件大全
  15. python爬取在线视频思路,用python实现多线程爬取影视网站全部视频方法【笔记】...
  16. 图表控件TeeChart安装使用
  17. webworker应用场景_JavaScript 工作原理之七-Web Workers 分类及 5 个使用场景
  18. stata蒙特卡罗模拟(二)模拟中心极限定理
  19. C语言编程题—结构体—设计程序,已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数 fun:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分
  20. 使用 Vue3 重构 Vue2 项目(长文)

热门文章

  1. excel减法函数_Excel教程:最常用的SUM函数送给你【收藏版】
  2. Intellij IDEA添加mybatis-mapp.xml文件
  3. 关于layui表格重载后日期选择器失效的问题
  4. html不支持js,我的浏览器不支持javascript怎么办?
  5. 计算机无法连接到远程计算机上的另一个控制台会话,原因是您正在运行一个控制台会话
  6. ADTK 聚合器(aggregator)方法汇总
  7. 广州国际车用空调展圆满落幕!旭派载誉而归,收货满满!
  8. 【2021-05-12】JS逆向之dy创作者平台登入滑块
  9. python|3种运行cmd命令行的方法
  10. java怎么在cmd运行_java在cmd运行的步骤