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屏幕输出到word文件

    Python可以通过使用docx库来将屏幕输出转换为Word文件。下面是一些可以帮助你完成此操作的步骤: 1.安装PythonDocx库 首先在Python中安装docx库,可以通过以下命令完成安装: !pip install python-docx 2.创建文档 在Python中创建一个docx对象并添加段落: from docx import Docum…

    python 2023年4月16日
    00
  • python 哈希验证文件

    哈希验证文件的过程是为了验证文件在传输和存储过程中是否发生了更改。通过计算文件内容的哈希值并对其进行比较,可以判断文件的完整性。Python提供了多种哈希算法和相关的库,下面我们来详细讲解Python哈希验证文件的完整攻略。 步骤 选择合适的哈希算法。Python自带了多种哈希算法,其中常用的有SHA1、SHA256、MD5等。 读取文件内容。使用Pytho…

    python 2023年4月16日
    00
  • python查看csv文件方法

    当我们需要处理CSV文件时, Python 为我们提供了csv模块,使用该模块,我们能够打开、读取、写入和关闭 CSV 文件。 下面是 Python 查看 CSV 文件的完整攻略: 导入csv模块 首先,我们需要导入csv模块,如下所示: import csv 打开CSV文件 使用 csv module 打开 CSV 文件的第一步是使用 open() 函数打…

    python 2023年4月16日
    00
  • python访问word文件

    访问word文件是Python中常见的操作之一,为了访问、读取和编辑Word文件,需要用到Python的第三方库python-docx。下面是详细的Python访问Word文件的攻略: 安装python-docx 在使用Python访问Word文件之前,需要先安装python-docx库。可以使用以下命令在命令行中安装: pip install python…

    python 2023年4月16日
    00
  • python文件或目录损坏无法读取

    对于Python文件或目录损坏无法读取的问题,我们需要做以下几个步骤: 检查文件或目录是否存在 检查文件或目录是否损坏 使用try-except捕获异常 修复或重建文件或目录 下面分别详细介绍这几个步骤。 1. 检查文件或目录是否存在 在读取文件或目录之前,我们需要首先检查它是否存在,避免无谓的运算。 import os if os.path.exists(…

    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 给.txt文件写入内容方法

    当我们需要将数据写入到一个文本文件中时,需要用到Python的文件操作相关函数。Python用标准IO对象(stdin, stdout)实现了一些由C语言库中stdio.h的函数所提供的操作文件的方法。 Python的文件对象提供了一些方法来处理文件操作,其中最常用的是write()方法将内容写入一个文本文件中。下面是完整的Python给.txt文件写入内容…

    python 2023年4月16日
    00
  • python删除文件指定字符串

    要删除文件中的指定字符串,可以使用Python中的文件操作和字符串处理功能。下面是Python删除文件指定字符串的完整攻略: 1.打开文件 使用Python内置函数open()打开文件,可以指定文件名和打开模式。 f = open("test.txt", "r") 2.读取文件内容 使用read()函数读取文件内容,并…

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