python itchat实现调用微信接口的第三方模块方法

本文介绍了如何利用Python的itchat库轻松实现微信个人号接口操作,包括安装、登录、消息处理、文件发送等功能。通过示例代码展示了如何发送文本、图片、文件等消息,以及注册消息回复方法,帮助开发者实现微信自动化。
摘要由CSDN通过智能技术生成

itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单。

使用不到三十行的代码,你就可以完成一个能够处理所有信息的微信机器人。

当然,该api的使用远不止一个机器人,更多的功能等着你来发现,比如这些。

该接口与公众号接口 itchatmp
共享类似的操作方式,学习一次掌握两个工具。

如今微信已经成为了个人社交的很大一部分,希望这个项目能够帮助你扩展你的个人的微信号、方便自己的生活。

【文章背景】最近几天干啥都不来劲,昨晚偶然了解到Python里的itchat包,它已经完成了wechat的个人账号API接口,使爬取个人微信信息更加方便。鉴于自己很早之前就想知道诸如自己微信好友性别比例都来自哪个城市之类的问题,于是乎玩心一起,打算爬一下自己的微信。

首先,在终端安装一下itchat包。pip install itchat

安装完成后导入包,再登陆自己的微信。过程中会生产一个登陆二维码,扫码之后即可登陆。登陆成功后,把自己好友的相关信息爬下来。


    import itchat
    itchat.login()
    #爬取自己好友相关信息, 返回一个json文件
    friends = itchat.get_friends(update=True)[0:]
    

有了上面的friends数据,我们就可以来做好友或者朋友圈数据分析啦!

python实现微信接口(itchat)

**安装
**


    sudo pip install itchat
    

登录

itchat.auto_login()
这种方法将会通过微信扫描二维码登录,但是这种登录的方式确实短时间的登录,并不会保留登录的状态,也就是下次登录时还是需要扫描二维码,如果加上hotReload==True,那么就会保留登录的状态,至少在后面的几次登录过程中不会再次扫描二维码,该参数生成一个静态文件itchat.pkl用于存储登录状态

退出及登录完成后调用的特定的方法

这里主要使用的是灰调函数的方法,登录完成后的方法需要赋值在 loginCallback 中退出后的方法,需要赋值在 exitCallback中.若不设置
loginCallback 的值, 将会自动删除二维码图片并清空命令行显示.


    import itchat, time
    def lc():
      print("Finash Login!")
    def ec():
      print("exit")
     
    itchat.auto_login(loginCallback=lc, exitCallback=ec)
    time.sleep()
    itchat.logout()  #强制退出登录  
    

回复消息

send

send(msg=“Text Message”, toUserName=None)

参数:

msg : 文本消息内容

  • @fil@path_to_file : 发送文件
  • @img@path_to_img : 发送图片
  • @vid@path_to_video : 发送视频
  • toUserName : 发送对象, 如果留空, 将发送给自己.

返回值

  • True or False

实例代码


    # coding-utf-8
    import itchat
    itchat.auto_login()
    itchat.send("Hello World!")
    ithcat.send("@fil@%s" % '/tmp/test.text')
    ithcat.send("@img@%s" % '/tmp/test.png')
    ithcat.send("@vid@%s" % '/tmp/test.mkv')
    

send_msg

send_msg(msg=‘Text Message’, toUserName=None),其中的的msg是要发送的文本,toUserName是发送对象,
如果留空, 将发送给自己,返回值为True或者False

实例代码


    import itchat
    itchat.auto_login()
    itchat.send_msg("hello world.")

send_file

send_file(fileDir, toUserName=None) fileDir是文件路径, 当文件不存在时,
将打印无此文件的提醒,返回值为True或者False

实例代码


    import itchat
     
    itchat.auto_login()
    itchat.send_file("/tmp/test.txt")
    

send_image

send_image(fileDir, toUserName=None) 参数同上

实例代码


    import itchat
     
    itchat.auto_login()
    itchat.send_img("/tmp/test.txt")

send_video

send_video(fileDir, toUserName=None) 参数同上

实例代码


    import itchat
     
    itchat.auto_login()
    itchat.send_video("/tmp/test.txt")

注册消息方法

itchat 将根据接受到的消息类型寻找对应的已注册的方法.

如果一个消息类型没有对应的注册方法, 该消息将会被舍弃.

在运行过程中也可以动态注册方法, 注册方式与结果不变.

注册方法

不带具体对象注册, 将注册为普通消息的回复方法.


    import itchat
    from itchat.content import *
    @itchat.msg_register(TEXT)  #这里的TEXT表示如果有人发送文本消息,那么就会调用下面的方法
    def simple_reply(msg):
      #这个是向发送者发送消息
      itchat.send_msg('已经收到了文本消息,消息内容为%s'%msg['Text'],toUserName=msg['FromUserName'])
      return "T reveived: %s" % msg["Text"]   #返回的给对方的消息,msg["Text"]表示消息的内容
    

带对象参数注册, 对应消息对象将调用该方法,其中isFriendChat表示好友之间,isGroupChat表示群聊,isMapChat表示公众号


    import itchat
    from itchat.content import *
     
    @itchat.msg_register(TEXT, isFriendChat=True, isGroupChat=True,isMpChat=True)
    def text_reply(msg):
      msg.user.send("%s : %s" % (mst.type, msg.text))
    

消息类型

向注册方法传入的 msg 包含微信返回的字典的所有内容.itchat 增加 Text, Type(也就是参数) 键值, 方便操作.

itcaht.content 中包含所有的消息类型参数, 如下表

参数 l类型 Text 键值
TEXT 文本 文本内容(文字消息)
MAP 地图 位置文本(位置分享)
CARD 名片 推荐人字典(推荐人的名片)
SHARING 分享 分享名称(分享的音乐或者文章等)
PICTURE 下载方法 图片/表情
RECORDING 语音 下载方法
ATTACHMENT 附件 下载方法
VIDEO 小视频 下载方法
FRIENDS 好友邀请 添加好友所需参数
SYSTEM 系统消息 更新内容的用户或群聊的UserName组成的列表
NOTE 通知 通知文本(消息撤回等)

附件的下载与发送

itchat 的附件下载方法存储在 msg 的 Text 键中.

发送的文件名(图片给出的默认文件名), 都存储在 msg 的 FileName 键中.

下载方法, 接受一个可用的位置参数(包括文件名), 并将文件响应的存储.

注意:下载的文件存储在指定的文件中,直接将路径与FileName连接即可,如msg"Text"


    @itchat.msg_register([PICTURE, RECORDING, ATTACHMENT, VIDEO])
    def download_files(msg):
      #msg.download(msg['FileName'])  #这个同样是下载文件的方式
      msg['Text'](msg['FileName'])   #下载文件
      #将下载的文件发送给发送者
      itchat.send('@%s@%s' % ('img' if msg['Type'] == 'Picture' else 'fil', msg["FileName"]), msg["FromUserName"])
    

群消息

增加了三个键值,如下:

  • isAt 判断是否 @ 本号
  • ActualNickName : 实际 NickName(昵称)
  • Content : 实际 Content

测试程序


    import itcaht
    from itchat.content import TEXT
     
    @itchat.msg_register(TEXT, isGroupChat=True)
    def text_reply(msg):
      if(msg.isAt):  #判断是否有人@自己
      #如果有人@自己,就发一个消息告诉对方我已经收到了信息
      itchat.send_msg("我已经收到了来自{0}的消息,实际内容为{1}".format(msg['ActualNickName'],msg['Text']),toUserName=msg['FromUserName'])
     
    itchat.auto_login()
    itchat.run()
    

注册消息的优先级

总的来说就是后面注册同种类型的消息会覆盖之前注册的消息,详情见文档 https://itchat.readthedocs.io/zh/latest/

消息内容

注意:所有的消息内容都是可以用键值对来访问的,如msg["FromUserName]就是查看发送者,itchat.search_friends(userName=msg[‘FromUserName’])[‘NickName’]查看的是当发送者昵称

一般消息

一般的消息都遵循以下的内容:


    {
   
      "FromUserName": "",
      "ToUserName": "",
      "Content": "",
      "StatusNotifyUserName": "",
      "ImgWidth": 0,
      "PlayLength": 0
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值