python能否自动发送微信文件

Python可以通过调用第三方库实现自动发送微信文件的功能。具体实现的步骤主要分为以下几步:

  1. 安装itchat和requests库

itchat是一个扫码登录微信网页版,并提供基础接口的第三方库,它可以实现在Python中自动登录微信;requests是Python中用于发送http/https请求的第三方库,我们可以使用它来发送图片。

这两个库可以通过pip安装:

pip install itchat requests
  1. 登录微信并获取好友列表

使用itchat库,可通过以下代码登录微信:

import itchat

itchat.auto_login(hotReload=True)

调用auto_login函数时可以添加参数hotReload=True,表示是否开启登录状态的保持,即下次运行程序时是否可以直接使用上次登录的状态。

登录成功后,可以使用get_friends()函数获取自己的好友列表:

friends = itchat.get_friends()

该函数返回的是一个列表,每个元素为一个字典对象,包含好友的详细信息。

  1. 发送图片

使用requests库发送图片,需要先使用itchat获取好友的UserName,然后再使用requests发送http请求将图片发送给好友。

首先,需要通过好友的昵称或备注名获取好友的UserName:

friend_name = "Tom"
friend = itchat.search_friends(name=friend_name)[0]
to_user_name = friend["UserName"]

然后,需要使用requests库发送图片:

import requests

image_path = "test_img.jpg"
with open(image_path, "rb") as f:
    files = {"file": f}
    response = requests.post(
        url=f"https://file.wx.qq.com/cgi-bin/mmwebwx-bin/webwxuploadmedia?f=json&pass_ticket={pass_ticket}",
        files=files,
        headers=headers
    )

    media_id = response.json().get("MediaId")

其中,image_path为图片路径,files参数为要上传的文件,response为http请求的响应,headers指定了请求头部分的信息。

  1. 发送消息

微信中发送图片需要分成两步:发送给微信服务器后,微信服务器会返回一个媒体ID,然后再将媒体ID作为参数发送给好友。因此,发送图片需要调用两次itchat库中的send()函数。

先调用send()函数发送一个临时语音消息,这样可以获取到发送消息所需的发送图片的url和参数信息:

msg = {
    "FromUserName": my_user_name,
    "ToUserName": to_user_name,
    "MediaId": media_id,
    "Type": "3"
}
result = itchat.send(msg, "filehelper")

发送成功后,会将服务器返回的url和参数信息保存在结果中,可以从结果中解析出来:

upload_url = result["Msg"].split("<br/>")[1].split("\"")[1]
upload_dict = result["Msg"].split("<br/>")[1].split("\"")[3]

然后再调用send()函数发送一个图片消息,将图片发送给好友:

msg = {
    "FromUserName": my_user_name,
    "ToUserName": to_user_name,
    "LocalID": upload_dict,
    "MediaId": media_id,
    "Type": "3"
}
itchat.send(msg)

这样就完成了自动发送微信文件的过程。

完整示例代码如下:

import itchat
import requests

itchat.auto_login(hotReload=True)
my_user_name = itchat.get_friends()[0]["UserName"]  # 获取自己的UserName

friend_name = "Tom"
friend = itchat.search_friends(name=friend_name)[0]
to_user_name = friend["UserName"]

image_path = "test_img.jpg"
with open(image_path, "rb") as f:
    files = {"file": f}
    response = requests.post(
        url=f"https://file.wx.qq.com/cgi-bin/mmwebwx-bin/webwxuploadmedia?f=json&pass_ticket={pass_ticket}",
        files=files,
        headers=headers
    )

    media_id = response.json().get("MediaId")


# 发送图片
msg = {
    "FromUserName": my_user_name,
    "ToUserName": to_user_name,
    "MediaId": media_id,
    "Type": "3"
}
result = itchat.send(msg, "filehelper")

# 获取上传图片的url和参数信息
upload_url = result["Msg"].split("<br/>")[1].split("\"")[1]
upload_dict = result["Msg"].split("<br/>")[1].split("\"")[3]

# 发送图片给好友
msg = {
    "FromUserName": my_user_name,
    "ToUserName": to_user_name,
    "LocalID": upload_dict,
    "MediaId": media_id,
    "Type": "3"
}
itchat.send(msg)

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python能否自动发送微信文件 - Python技术站

(0)
上一篇 2023年4月16日
下一篇 2023年4月16日

相关文章

  • python读取bin文件内容

    Python可以使用二进制模式读取bin文件。下面是Python读取bin文件的完整攻略: 打开文件 可以使用open()函数打开bin文件。open()函数的第二个参数表示文件的访问模式。其中,”rb”表示二进制模式打开文件,”wb”表示二进制模式写入文件。读取bin文件时,需要使用”rb”模式打开。 f = open("file.bin&quo…

    python 2023年4月16日
    00
  • python中读取文件中的表格数据

    针对Python中读取文件中表格数据的攻略,我们可以采用pandas库进行操作。 Pandas库是Python中专门用于数据清洗和数据分析的开源库,它可以非常方便的读入和处理表格数据。具体的读取流程如下: 首先,需要安装pandas库(如果还没有安装),可以采用以下代码: pip install pandas 接着,我们需要确定读取数据的文件路径和文件名。假…

    python 2023年4月16日
    00
  • python如何修改文件夹权限

    修改文件夹(及其内部所有文件)权限是Linux系统中常见的操作之一,Python作为一种跨平台的编程语言,也能够通过操作系统提供的API实现该操作。 Python中通过操作os模块来完成文件夹权限的修改。os模块提供了一些与操作系统进行交互的函数,其中包括修改文件夹权限的函数:os.chmod()。 os.chmod(path, mode)函数用于修改文件或…

    python 2023年4月16日
    00
  • python如何导入txt文件

    Python是一种高级编程语言,提供了许多功能强大的方式,可以轻松读取和处理文本文件,本文将详细讲解如何导入txt文件。 1. 什么是txt文件 TXT文件是一种纯文本文件,它不依赖于特定的程序或软件,而是用ASCII字符编码,它通常只包含文本数据,这意味着它不包含图像、格式、样式或其他非文本内容。这使得TXT文件在许多情况下的交换和共享变得更加容易。 2.…

    python 2023年4月16日
    00
  • python文件的模块详解

    Python文件的模块(Module)详解 在Python中,每一个以.py结尾的文件都可以被看作是一个模块,通过使用import语句,我们可以将这些模块引入到我们的代码中,实现代码复用和模块化编程。 本文将通过以下几个方面来详细介绍Python文件的模块详解: 模块的定义 模块的使用 命名空间与作用域 模块搜索路径 模块的重载 常见的Python内置模块 …

    python 2023年4月16日
    00
  • python搜索路径下所有文件夹

    在Python中,搜索路径(Sys.Path)用于在导入模块时寻找对应的文件。Python 会按照以下顺序搜索可用路径: 当前目录 PYTHONPATH (如果存在) 默认安装路径中的标准库目录 我们可以通过以下代码来查看Python中的搜索路径: import sys print(sys.path) 输出结果可能会类似以下这样: [”, ‘/usr/lo…

    python 2023年4月16日
    00
  • python按行号修改文件方法解析

    Python 可以非常方便地按行号修改文件。下面是详细的 python 按行号修改文件方法解析攻略。 读取文件内容并按行编辑 首先,我们需要读取文件的内容并将其存储为列表,以便按行编辑。 with open(‘file.txt’, ‘r’) as f: lines = f.readlines() 通过这个代码,我们打开名为 “file.txt” 的文件并将其…

    python 2023年4月16日
    00
  • python写数据到json文件

    首先让我们来了解一下Python写数据到JSON文件的基本步骤:1. 创建一个Python字典或列表2. 将Python字典或列表转化为JSON对象3. 将JSON对象写入文件 现在,我将为你提供两个Python示例来演示如何将数据写入JSON文件: 将Python字典写入JSON文件 Python字典示例(data.json): data = { &quo…

    python 2023年4月16日
    00
合作推广
合作推广
分享本页
返回顶部