自从有了itchat这个神器之后,一直在考虑能做些什么东西。
先后做了发送撤回消息的bot和推荐spotify音乐的bot,到头来,所有的聊天记录都静静地躺在我的redis里面,需要利用起来也十分麻烦。
于是最近,我突然想到,既然ELK能用来可视化log,那何尝不能用来可视化一下微信的聊天记录呢。
需要的东西
ELK全家桶。
Redis,用来通过在itchat中pub,在logstash中sub来获取微信聊天内容。
Itchat。基于web微信的第三方SDK。
Step by Step
首先自然需要写个Itchat的脚本来获取群消息。例子看文档已经足够。
接下来假设我们获取到一个类似
|
|
的消息内容。我们需要把 message传递给logstash,再由logstash写入elasticsearch。
我想到的方法是使用Redis的pubsub方法。
先把message dump成 string的形式,交给redis publish出去。
|
|
为了接收publish的message,logstash应该有如下的输入配置。
|
|
注意点是需要codec => "json"
这一项,因为,我们publish的是一个string,我们要需要将其按照json的格式解析出来里面的内容。
接下来,配置logstash的输出。
|
|
以上两项分别对应elasticsearch的index和type。这样我们可以通过localhost:9200/from_my_wechat/chatlog
的形式访问和操作被索引的聊天内容。
最后打开kibana,把我们的索引项目称from_my_wechat
填进去就大功告成了。
随便点开图标一览,画两个图呗,比如统计一下谁特么发言最多这种。
To do
- 对中文的field需要进行分词。
- 对占用较大的无用field需要整理移除。
以上。