该项目来源于github,将其跑通:

# -*- coding: utf-8 -*-
"""
Created on Fri Jun 21 12:09:43 2019@author: wuxian
"""
import sys
import os, re, shutil, time, collections, jsonfrom html.parser import HTMLParser
from xml.etree import ElementTree as ETreeimport itchat
from itchat.content import *#itchat.login()
msg_store = collections.OrderedDict()
timeout = 600
sending_type = {'Picture': 'img', 'Video': 'vid'}
data_path = 'data'
nickname = ''
bot = Noneif __name__ == '__main__':if not os.path.exists(data_path):os.mkdir(data_path)# if the QR code doesn't show correctly, you can try to change the value# of enableCdmQR to 1 or -1 or -2. It nothing works, you can change it to# enableCmdQR=True and a picture will show up.bot = itchat.new_instance()
#    bot.auto_login(hotReload=True, enableCmdQR=1)bot.login()nickname = bot.loginInfo['User']['NickName']def clear_timeouted_message():now = time.time()count = 0for k, v in list(msg_store.items()):if now - v['ReceivedTime'] > timeout:count += 1else:breakfor i in range(count):item = msg_store.popitem(last=False)def get_sender_receiver(msg):sender = nicknamereceiver = nicknameif msg['FromUserName'][0:2] == '@@': # group chatsender = msg['ActualNickName']m = bot.search_chatrooms(userName=msg['FromUserName'])if m is not None:receiver = m['NickName']elif msg['ToUserName'][0:2] == '@@': # group chat by myselfif 'ActualNickName' in msg:sender = msg['ActualNickName']else:m = bot.search_friends(userName=msg['FromUserName'])if m is not None:sender = m['NickName']m = bot.search_chatrooms(userName=msg['ToUserName'])if m is not None:receiver = m['NickName']else: # personal chatm = bot.search_friends(userName=msg['FromUserName'])if m is not None:sender = m['NickName']m = bot.search_friends(userName=msg['ToUserName'])if m is not None:receiver = m['NickName']return HTMLParser().unescape(sender), HTMLParser().unescape(receiver)def print_msg(msg):msg_str = ' '.join(msg)print(msg_str)return msg_strdef get_whole_msg(msg, download=False):sender, receiver = get_sender_receiver(msg)if len(msg['FileName']) > 0 and len(msg['Url']) == 0:if download: # download the file into data_path directoryfn = os.path.join(data_path, msg['FileName'])msg['Text'](fn)if os.path.getsize(fn) == 0:return []c = '@%s@%s' % (sending_type.get(msg['Type'], 'fil'), fn)else:c = '@%s@%s' % (sending_type.get(msg['Type'], 'fil'), msg['FileName'])return ['[%s]->[%s]:' % (sender, receiver), c]c = msg['Text']if len(msg['Url']) > 0:try: # handle map labelcontent_tree = ETree.fromstring(msg['OriContent'])if content_tree is not None:map_label = content_tree.find('location')if map_label is not None:c += ' ' + map_label.attrib['poiname']c += ' ' + map_label.attrib['label']except:passurl = HTMLParser().unescape(msg['Url'])c += ' ' + urlreturn ['[%s]->[%s]: %s' % (sender, receiver, c)]@bot.msg_register([TEXT, PICTURE, MAP, CARD, SHARING, RECORDING,ATTACHMENT, VIDEO, FRIENDS], isFriendChat=True, isGroupChat=True)
def normal_msg(msg):print_msg(get_whole_msg(msg))now = time.time()msg['ReceivedTime'] = nowmsg_id = msg['MsgId']msg_store[msg_id] = msgclear_timeouted_message()@bot.msg_register([NOTE], isFriendChat=True, isGroupChat=True)
def note_msg(msg):print_msg(get_whole_msg(msg))content = HTMLParser().unescape(msg['Content'])try:content_tree = ETree.fromstring(content)except Exception:# invent/remove to chatroomreturnif content_tree is None:returnrevoked = content_tree.find('revokemsg')if revoked is None:returnold_msg_id = revoked.find('msgid').textold_msg = msg_store.get(old_msg_id)if old_msg is None:returnmsg_send = get_whole_msg(old_msg, download=True)for m in msg_send:bot.send(m, toUserName='filehelper')clear_timeouted_message()if __name__ == '__main__':bot.run()

【微信】利用python实现微信好友防撤回、消息监控相关推荐

  1. 用python做头像_如何利用python制作微信好友头像照片墙?

    这个不难,主要用到itchat和pillow这2个库,其中itchat用于获取微信好友头像照片,pillow用于拼接头像生成一个照片墙,下面我简单介绍一下实现过程,代码量不多,也很好理解,实验环境wi ...

  2. 利用Python制作微信跳一跳外挂,微信好友装逼神器!

    导语 前几天在GitHub上看到有人利用Python玩一款名为"跳一跳"的微信小程序,于是打算自己也来试一试,进群:711944363 获取微信跳一跳源码! 演示工具 电脑系统:W ...

  3. python表白代码照片墙-如何利用python制作微信好友头像照片墙?

    这个不难,主要用到itchat和pillow这2个库,其中itchat用于获取微信好友头像照片,pillow用于拼接头像生成一个照片墙,下面我简单介绍一下实现过程,代码量不多,也很好理解,实验环境wi ...

  4. 利用python进行微信好友分析

    欢迎python爱好者加入:学习交流群 667279387 本文主要利用python对个人微信好友进行分析并把结果输出到一个html文档当中,主要用到的python包为itchat,pandas,py ...

  5. python怎么使用别人的代码_利用Python查看微信共同好友功能的实现代码

    总有思路清奇的朋友存在,想实现查看微信共同好友: 由于之前分享的代码有获取过微信好友头像,所以当时第一反应是通过itchat微信接口获取好友信息,比对两个人的好友信息列表就可以实现了.按理说这么简单的 ...

  6. python头像右上角加红色数字_利用python实现微信头像加红色数字功能

    通过Python实现将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果. 类似于图中效果 实现过程: 准备两张图片如下: 使用PIL图像处理库,导入moudle ...

  7. python程序设置头像_利用python实现微信头像加红色数字功能

    通过Python实现将你的 QQ 头像(或者微博头像)右上角加上红色的数字,类似于微信未读信息数量那种提示效果. 类似于图中效果 实现过程: 准备两张图片如下: 使用PIL图像处理库,导入moudle ...

  8. 利用Python制作微信机器人(三)实现爬取JD商品价格

    从前两篇的博客来看,目前已经实现了机器人单向给微信发消息,和与机器人进行交互式发消息,详情如下: 利用Python制作微信机器人(一)机器人单向发消息 利用Python制作微信机器人(二)与机器人进行 ...

  9. python微信爬取教程_PYTHON爬虫之旅系列教程之【利用Python开发微信公众平台一】...

    感谢大家的等待,好啦,都准备好瓜子.板凳,老司机要发车啦-- 本系列课程讲述"PYTHON爬虫之旅",具体大纲可参考:[PYTHON爬虫之旅]概要目录. 本节课讲述如何利用Pyth ...

  10. 利用Python制作微信机器人(二)

    上次写了利用Python制作微信机器人,其中只实现了通过api来控制微信机器人来给自己发送消息,具体详情可查看: 利用Python制作微信机器人(一) 本篇博客主要编写如何是实现给微信机器人发送消息, ...

最新文章

  1. RhinoMock学习-绑定回调
  2. python爬虫搜特定内容的论文_python基于BeautifulSoup实现抓取网页指定内容的方法...
  3. 此安装程序必须使用 java 开发工具包 (jdk) 执行_彻底搞懂Java开发工具包(JDK)安装及环境变量配置...
  4. BZOJ 4849 [NEERC2016]Mole Tunnels (模拟费用流)
  5. eclipse mybatis插件_Archetype插件的介绍和使用
  6. 24/100. Linked List Cycle
  7. CORS 请求未能成功_CORS攻击概述
  8. pythonopencv显示图像_OpenCV-Python 读取显示图像 | 五
  9. python之条件、循环语句
  10. 你真的会用Gson吗?Gson使用指南(三)
  11. 华为如何造车?动机、底气、战略布局、客户
  12. 跨域的另一种解决方案——CORS(Cross-Origin Resource Sharing)跨域资源共享
  13. python是什么软件-软件开发是什么?
  14. NMS 原理和c++实现,已测试通过
  15. 中文停用词文档_实战:朴素贝叶斯对文档进行分类
  16. ios睡眠分析 卧床 睡眠_使用Swift在HealthKit中进行睡眠分析
  17. 飞鱼星测试软件,飞鱼星VE984GW+
  18. 【托业】【金山词霸】单词1-20
  19. 计算机属性资源管理器已停止工作,资源管理器已停止工作,详细教您怎么解决资源管理器已停止工作...
  20. 操作系统习题自用(三)

热门文章

  1. 计算机的分区原理,详解磁盘分区的基本原理
  2. MySQL中IFNULL函数的使用方法
  3. 认识微型计算机 ppt,认识微型计算机PPT课件).ppt
  4. 追求极致的匠心:ThinkPad X280商用本评测体验
  5. 突发!微软亚研CV大牛王井东离职!或将加入百度
  6. 机器学习 - 异常检测算法之孤立森林(Isolation Forest)
  7. 数据库SQL中求平均函数avg对于值为NULL和值为0的计算区别
  8. Android+8.0+微信表情,微信8.0“爆炸式”更新!表情会动还可以扔炸弹!网友:安卓不配吗?...
  9. 祖鲁法则.mobi下载
  10. java状态机设计模式_Java设计模式之状态模式详解