python 请在微信客户端打开_当 Python 遇到微信

自从微信禁止网页版登陆之后,itchat 库实现的功能也就都不能用了,那现在 Python 还能操作微信吗?答案是还可以。

目前有一个项目 WechatPCAPI 可以对微信进行操作,简单来说它是直接操作 PC 版微信客户端的,当然它有一定不足之处就是:PC 版微信客户端和 Python 都需要使用指定版本的,本文我们使用的 Python 版本为 3.7.6 ,微信客户端使用版本为 2.6.8.52 ,WechatPCAPI 的 GitHub 地址为: https://github.com/Mocha-L/WechatPCAPI。

获取好友列表
WechatPCAPI 提供了方法 get_friends(),该方法返回信息包括:好友、群和公众号的列表信息,信息内容主要包括:微信号、昵称和自己设置的备注。

我们使用获取的昵称做个简单的词云展示,代码实现如下所示:
 

logging.basicConfig(level=logging.INFO)
 
def on_message(message):
 pass
 
def get_friends():
 # 初始化微信实例
 wx_inst = WechatPCAPI(on_message=on_message, log=logging)
 # 启动微信
 wx_inst.start_wechat(block=True)
 # 等待登陆成功,此时需要人为扫码登录微信
 while not wx_inst.get_myself():
  time.sleep(5)
 print('登陆成功')
 nicknames = []
 # 排除的词
 remove = ['还是', '不会', '一些', '所以', '果然',
     '起来', '东西', '为什么', '真的', '这么',
     '但是', '怎么', '还是', '时候', '一个',
     '什么', '自己', '一切', '样子', '一样',
     '没有', '不是', '一种', '这个', '为了'
   ]
 for key, value in wx_inst.get_friends().items():
  if key in ['fmessage', 'floatbottle', 'filehelper'] or 'chatroom' in key:
   continue
  nicknames.append(value['wx_nickname'])
 words = []
 for text in nicknames:
  if not text:
   continue
  for t in jieba.cut(text):
   if t in remove:
    continue
   words.append(t)
 global word_cloud
 # 用逗号隔开词语
 word_cloud = ','.join(words)
 
def nk_cloud():
    # 打开词云背景图
    cloud_mask = np.array(Image.open('bg.png'))
    # 定义词云的一些属性
    wc = WordCloud(
        # 背景图分割颜色为白色
        background_color='white',
        # 背景图样
        mask=cloud_mask,
        # 显示最大词数
        max_words=300,
        # 显示中文
        font_path='./fonts/simkai.ttf',
        # 最大尺寸
        max_font_size=70
    )
    global word_cloud
    # 词云函数
    x = wc.generate(word_cloud)
    # 生成词云图片
    image = x.to_image()
    # 展示词云图片
    image.show()
    # 保存词云图片
    wc.to_file('nk.png')

看一下效果

消息防撤回
我们在使用微信和好友聊天时,对方有时会有撤回消息的情况,正常情况下,我们是不知道好友撤回的消息是什么的,通过 WechatPCAPI 就可以实现消息防撤回的功能。

我们知道通常撤回的消息是点击撤回操作前一步发送的内容,当然也可能撤回的是前两步、三步 ... 的消息,这里我们只对撤回前一步的消息做处理,基本思路是:我们将撤回前一步发送的消息存一下,当对方点击撤回操作时,我们再将前一步的消息再次返回给自己。

下面看一下实现代码:
 

ogging.basicConfig(level=logging.INFO)
queue_recved_event = Queue()
 
def on_message(msg):
    queue_recved_event.put(msg)
 
def login():
    pre_msg = ''
    # 初始化微信实例
    wx_inst = WechatPCAPI(on_message=on_message, log=logging)
    # 启动微信
    wx_inst.start_wechat(block=True)
    # 等待登陆成功,此时需要人为扫码登录微信
    while not wx_inst.get_myself():
        time.sleep(5)
    print('登陆成功')
    while True:
        msg = queue_recved_event.get()
        data = msg.get('data')
        sendinfo = data.get('sendinfo')
        data_type = str(data.get('data_type'))
        msgcontent = str(data.get('msgcontent'))
        is_recv = data.get('is_recv')
        print(msg)
        if data_type == '1' and 'revokemsg' not in msgcontent:
            pre_msg = msgcontent
        if sendinfo is not None and 'revokemsg' in msgcontent:
            user = str(sendinfo.get('wx_id_search'))
            recall = '撤回的消息:' + pre_msg
            wx_inst.send_text(to_user=user, msg=recall)

 

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 可以参考下面这个示例:import itchat itchat.login() #登陆微信 friends = itchat.search_friends(name='xxx') #搜索指定好友 userName = friends[0]['UserName'] #获取好友的UserName itchat.send('Hello, 我是Python程序发出的消息', toUserName=userName) #发送消息 ### 回答2: 使用Python编写微信客户端给指定好友发送消息的模板,可以使用itchat库实现。 首先,我们需要安装itchat库。可以使用pip命令在终端中执行以下命令安装: ```python pip install itchat ``` 安装完成后,我们可以在Python代码中引入itchat库: ```python import itchat ``` 然后,我们需要使用itchat库登录微信账号,可以调用login()函数进行登录: ```python itchat.login() ``` 在登录成功后,可以使用search_friends()函数来查找指定好友的信息。该函数需要传入好友的微信昵称,返回一个字典,包含了好友的详细信息。我们可以通过该字典获取到好友的微信id,然后使用send_msg()函数向好友发送消息: ```python friend = itchat.search_friends(nickname='好友昵称') friend_id = friend[0]['UserName'] itchat.send_msg('要发送的消息', friend_id) ``` 最后,我们需要调用itchat.run()函数来运行微信客户端。该函数会一直运行,直到我们主动退出程序。 完整的代码如下: ```python import itchat itchat.login() friend = itchat.search_friends(nickname='好友昵称') friend_id = friend[0]['UserName'] itchat.send_msg('要发送的消息', friend_id) itchat.run() ``` 运行以上代码,我们就可以实现使用Python编写微信客户端给指定好友发送消息的功能了。 需要注意的是,该模板只能在登录的设备上运行,不支持后台运行。 ### 回答3: 下面是一个使用Python编写的微信客户端模板,可以用来给指定好友发送消息。 ```python import itchat # 登录微信账号 itchat.auto_login() # 获取好友列表 friend_list = itchat.get_friends() # 找到指定好友的UserName target_friend_name = "指定好友的昵称" target_friend_username = None for friend in friend_list: if friend["NickName"] == target_friend_name: target_friend_username = friend["UserName"] break # 如果找不到指定好友,打印错误信息并退出 if target_friend_username is None: print("找不到指定好友") exit() # 发送消息 message = "你好,这是一条测试消息" itchat.send(message, toUserName=target_friend_username) # 登出微信账号 itchat.logout() ``` 注意,运行该脚本之前需要安装itchat模块。可以使用以下命令安装: ```shell pip install itchat ``` 其中,`指定好友的昵称`需要替换为你要发送消息的好友的昵称。你也可以根据其他信息进行筛选,比如备注名等。 该脚本登陆微信账号后,会先获取好友列表,然后通过遍历好友列表找到指定好友的UserName。如果找不到,则打印错误信息并退出。发送消息时,只需调用`itchat.send`函数,将消息内容和目标好友的UserName传入即可。 注意,该脚本只能在有图形界面的系统上运行,因为itchat模块需要扫描二维码进行登录。如果需要在无界面的服务器上运行,可以考虑使用itchat的可靠登陆方式,具体可以参考itchat的文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值