文章背景:

闲来无事,在街上吃了些零食并用微信付款。不得不说程序员的思维和别人的是真不同,我想的却是微信真强大,稍微查看了一下,还有许多的小程序,很多大企业都在与它合作。这些还不是最重要的,关键是看到了一个微信的根本开源库,itchat。碰巧最近老婆和我聊天明显心情不佳,聊天说三句撤回两句。稍微一联想,就有了下面这次经历。

我要利用Python做一个什么样的软件呢,查看撤回消息,但是我还要思维细化。

私聊撤回的信息可以收集起来并发送到个人微信的文件助手,包括:

(1)who:谁发送的

(2)when:什么时候发送的消息

(3)what:什么信息

(4)which:哪一类信息,包括:文本、图片、语音、视频、分享、位置、附件代码:

#--encoding:utf-8--
import os
import re
import shutil
import time
import itchat
from itchat.content
#说明:可以撤回的有文本文字、语音、视频、图片、位置、名片、分享、附件
#[msg_id:(msg_from,msg_to,msg_time,msg_time_rec,msg_type,msg_content,msg_share_url)]
msg_dict- {}
#文件存储临时目录
rev_tmp_dir = "/home/alic/RevDir/"
if not os.path.exists(rev_tmp_dir):os.makdir(rev_tmp_dir)
#表情有个问题 | 接受信息和吉首note的msg_id不一致 巧合解决方案
face_bug = None
#将接收到的消息存放在字典中,当接收到新消息时对字典中超市的消息进行清理 | 不接受不具有撤回功能的消息br/>#[TEXT,PICTURE,MAP,CARD,SHARING,RECORDING,ATTACHMENT,VIDEO,FRIENDS,NOTE]
@itchat.msg_register([TEXT,PICTURE,MAP,CARD,SHARING,RECORDING,ATTACHMENT,VIDEO])
def handler_receive_msg(msg):
global face_bug
#获取的是本地时间戳并格式化本地时间戳 e:2017-04-21 21:30:00
msg_time_rec - time.strftime("%Y-%m-%d %H:%M:%S",time.locltime())
#消息ID
msg_id = msg['MsgId']
#消息时间
msg_time = msg['CreateTime']
#消息发送人昵称 | 这里也可以使用RemarkName备注 但是自己活着没有备注的人为None
msg_from = (itchat.search_friends(userName=msg['FromUserName']))['NickName']
#消息内容
msg_content = None
#分享的链接
msg_share_url = None
if msg['Type'] == 'Text'
or msg['Type'] == 'Friends':
msg_content = msg['Text']
elif msg['Type'] == 'Recording'
or msg['Type'] == 'Attachment'
or msg['Type'] == 'Video'
or msg['Type'] == 'Picture':
msg_content = r"" + msg['FileName']
#保存文件
msg['Type'](rev_tmp_dir + msg['FileName'])
elif msg['Type'] == 'Card':
x,y,location = re.search(
-<location x="(.
?)"y="(.?)".label="(.?)".",msg['OriContent']).group(1,2,3)
if location is None:
msg_content = r"纬度->" + x.str() + "经度->" + y.str()
else:
msg_content = r"" + location
elif msg['Type'] == 'Sharing':
msg_content = msg['Text']
msg_content = msg['Url']
face_bug = msg_content"msg_type":msg["Type"],
"msg_content":msg_content,"msg_share_url":msg_share_ur
}
}
)
#收到note通知类消息,判断是不是撤回并进行相应操作
@itchat.msg_register([NOTE])
br/>#更新字典
msg_dict.update(
{
msg_id:{
"msg_from":msg_from,"msg_time":msg_time,"msg_time_rec":msg_time_rec,
"msg_type":msg["Type"],
"msg_content":msg_content,"msg_share_url":msg_share_ur
}
}
)
#收到note通知类消息,判断是不是撤回并进行相应操作
@itchat.msg_register([NOTE])
def send_msg_helper(msg):
global face_bug
if re.search(r"<![CDATA[.撤回了一条消息]]>",msg['Content']) is not None:
#获取消息的id
old_msg_id = re.search("<msgid>(.
?)</msgid>",msg['Content']).group(1)
old_msg = msg_dict.get(old_msg_id,{}
if len(old_msg_id) < 11:
itchat.send_file(rev_tmp_dir + face_bug,toUserName='filehelper')
os.remove(rev_tmp_dir + face_bug)
else:
msg_boby = "告诉你一个秘密~" + "
"

  • old_msg.get('msg_from') + "撤回了" + old_msg.get("msg_type") + "消息" + "
    "
  • old_msg.get('msg_time_rec') + "
    ")
  • "撤回了什么" + "
    "
  • r"" + old_msg.get('msg_content')
    #如果是分享存在链接
    if old_msg['msg_type'] == "Sharing": msg_body += "
    就是这个链接" + old_msg.get('msg_share_url')
    #将撤回消息发送到文件助手
    itchat.send(msg_body,toUserName='filehelper')
    #有文件的话也要将文件发送回去
    if old_msg["msg_type"] == "Picture"
    or old_msg["msg_type"] == "Recording"
    or old_msg["msg_type"] == "Video"
    or old_msg["msg_type"] == "Attachment":
    file = '@fil@%s' % (rev_tmp_dir + old_msg['msg_content'])
    itchat.send(msg=file,toUserName='filehelper')
    os.remove(rev_tmp_dir + old_msg['msg_content'])
    #删除字典旧消息
    msg_dict.pop(old_msg_id)
    if name == 'main':
    itchat.auto_login(hotReload=True,enableCmdQR=2)
    itchat.run()
    此Python软件可以在终端运行,扫码登录即可。当然在Windows系统上运行当然是可以的,不过要打包,这肯定也难不倒你们。不过路径最好用相对路径。

→ ~ python wx.py
Getting uuid of QR code.
Downloading QR code.
Please scan the QR code to log in.
Please press confirm on your phone.
Loading the contact,this may take a little while.
[3:J
Login successfully as AlicFeng
Start auto replying.
实现的效果:

itchat

其实上面Python代码都是编程逻辑,最关键的还itchat微信这个神级开源库。

简介

itchat是一个开源的微信个人号接口,使用python调用微信变得非常简单。简单是用itchat代码即可构建一个基于微信的即时通讯,更不错的体现在于方便扩展个人微信的在其他平台的更多通讯功能。

安装

pip3 install itchat

itchat - Helloworld

仅仅三行代码发送一条信息给文件助手

import itchat
itchat.auto_login(hotReload=True)
itchat.send('Hello AlicFeng',toUserName = 'filehelper')
查看客户端

itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单,使用不到三十行的代码,你就可以完成一个能够处理所有信息的微信机器人。

好了,以上就是全部内容的分享,如果你跟我一样都喜欢python,也在学习python的道路上奔跑,欢迎你加入python学习群:839383765 群内每天都会分享最新业内资料,分享python免费课程,共同交流学习,让学习变(编)成(程)一种习惯!

转载于:https://blog.51cto.com/14186420/2360176

程序员利用Python破解老婆撤回的消息,这样竟然还有老婆?相关推荐

  1. 程序员用 Python 破解同事的加密压缩包!不小心知道了……

    图书+视频+源代码+答疑群,一本书带你入Python 作者 | 朱小五 本文经授权转载自凹凸玩数据(ID:alltodata) 又是一杯奶茶. 事情的经过是这样的: 又是奶茶,行吧行吧. 快点开工,争 ...

  2. python面向对象实例王者荣耀_大牛程序员利用Python开发王者荣耀带妹神器,一路直奔上王者...

    王者荣耀 -很火的手游-简直老少通吃-令人发指-虽然操作简单-但为什么你还是会被虐, 其实 是有技巧的--本文Python大神带你研究王者荣耀各类英雄的出装小技巧,让你成为大神般的存在 前期准备 环境 ...

  3. python接私活王者_大牛程序员利用Python开发王者荣耀带妹神器,一路直奔上王者...

    王者荣耀 -很火的手游-简直老少通吃-令人发指-虽然操作简单-但为什么你还是会被虐, 其实 是有技巧的--本文Python大神带你研究王者荣耀各类英雄的出装小技巧,让你成为大神般的存在 前期准备 环境 ...

  4. 大牛程序员利用Python开发王者荣耀带妹神器,一路直奔上王者

    王者荣耀 -很火的手游-简直老少通吃-令人发指-虽然操作简单-但为什么你还是会被虐, 其实 是有技巧的--本文Python大神带你研究王者荣耀各类英雄的出装小技巧,让你成为大神般的存在 前期准备 环境 ...

  5. 给Lisp程序员的Python简介

    给Lisp程序员的Python简介 作者:Peter Norvig,译者:jineslong<zzljlu@gmail.com> 这是一篇为Lisp程序员写的Python简介(一些Pyth ...

  6. python送程序员收入_程序员学Python后惊叹,这么丰厚的收入是Java给不了的!

    原标题:程序员学Python后惊叹,这么丰厚的收入是Java给不了的! 你都用 Python 来做什么?? 发现很多人都在学习 Python ,但是没有明确的说明可以做什么,主流的功能是什么? 想知道 ...

  7. python lisp_给Lisp程序员的Python简介

    作者:Peter Norvig,译者:jineslong 这是一篇为Lisp程序员写的Python简介(一些Python程序员告诉我,这篇文章对他们学习Lisp也有帮助,尽管这不是我的本意).基本上, ...

  8. lisp和python_给Lisp程序员的Python简介

    作者:Peter Norvig,译者:jineslong 这是一篇为Lisp程序员写的Python简介(一些Python程序员告诉我,这篇文章对他们学习Lisp也有帮助,尽管这不是我的本意).基本上, ...

  9. 利用 Python 破解 ZIP 或 RAR 文件密码

    利用 Python 破解 ZIP 或 RAR 文件密码 破解原理 实验环境 库 利用 Pipenv 安装 rarfile 编码 准备密码本 读取压缩文件 尝试解压 暴力破解 程序入口 使用 运行结果: ...

最新文章

  1. JVM结构、GC工作机制详解
  2. 全球及中国木材加工行业运行状况与投资产值预测报告2022版
  3. AbstractBeanFactory 的getBean()方法调用FactoryBean
  4. git服务器的简单搭建
  5. ASP.NET Core 2.0 Web API项目升级到ASP.NET Core 3.0概要笔记
  6. 有关链表的小技巧,我都给你总结好了
  7. 树线段hdu 4508 美素数(线段树)
  8. Ubuntu16.04 设置自启动脚本,系统重启自动执行自定义脚本任务
  9. docker search oracle,Docker search 命令
  10. android 号码区号判断,android 将手机号中间隐藏为星号(*)和手机号码判断
  11. 【黑马程序员pink老师前端】HTML
  12. 仿剩余金额宝数字渐慢跳动效果
  13. 目前最好的折叠屏手机也“翻车”了
  14. 折腾T480及VMware
  15. Linux:两种非交互修改用户密码的两种方式
  16. 液晶12864显示字符
  17. python脚本抢优惠券_Python写京东抢券小工具
  18. 让字体变的更清晰CSS 中 -webkit-font-smoothing
  19. 2022.10.6 英语背诵
  20. 【算法加速】区分ASIC与CPU、GPU、FPGA几个概念

热门文章

  1. 网站二次开发如何防止别人打包源码_面试官:你说你对Kafka比较熟?看过源码吗?...
  2. Packet for query is too large
  3. Ajax请求Session超时解决
  4. JDK,JRE,JVM,JIT
  5. java设计模式之UML③类图讲解多个类之间的关系
  6. OpenStack、KVM、Docker——Docker之后还需要OpenStack吗?
  7. CPU+GPU异构计算完全解析
  8. 100道JS构造函数面试题
  9. [剑指Offer] 数据流中的中位数
  10. 如何修改移动设备按钮默认样式