python微信公众号推送消息

news2024/12/24 21:24:34

目录

准备数据

接口

代码


微信公众号开发文档:https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html

准备数据

1、微信公众号注册:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login

2、注册成功后可生成属于自己的appID和appsecret

3、想要查看推送的效果,需先关注当前的测试账号,关注成功后,可在列表查看当前的粉丝数和具体的open_id

接口

1、获取微信公众号的授权token:https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={appid}&secret={appsecret}

2、获取当前公众号的粉丝的open_id:https://api.weixin.qq.com/cgi-bin/user/get?access_token={self.token}&next_openid={next_openid}

3、 发送模板消息的接口:https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={self.token}

 4、发送普通消息的接口:https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=xxx

5、其他构造数据的接口推荐

古诗词·一言API - 可以随机获取一句古诗词名句的接口   可免费使用

古诗词文名句接口文档 — SaintIC Docs 文档 

唐诗大全API接口 - 天行数据TianAPI

今日诗词 - 一言API - 诗词实时智能推荐 - 今日诗词开放接口 - 今日诗词 API - 个人文章分享 

天气网 (weather.com.cn)      使用爬虫进行获取

(10条消息) 中国天气城市代码编号_101010100_it_zujun的博客-CSDN博客

‘’使用方法:f'http://www.weather.com.cn/weather{城市编号}/.shtml'

https://api.lovelive.tools/api/SweetNothings/Serialization/Json   每日情话

代码

import json, random, requests


class WechatSendmes():

    def __init__(self,appid,secret,template_id):
        self.appid = appid
        self.secret = secret
        self.template_id = template_id

    def get_token(self):
        '''
        # 获取access_token
        :return:
        '''
        url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={}&secret={}'.format(
            self.appid, self.secret)
        headers = {
            'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36'
        }
        res = requests.get(url, headers=headers).json()
        access_token = res['access_token']
        return access_token

    def get_openid(self):
        '''
        # 获取要推送用户的openid
        :return:
        '''
        next_openid = ''  # 第一个拉取的OPENID,不填默认从头开始拉取 ,一次只能获取10000条
        url_openid = 'https://api.weixin.qq.com/cgi-bin/user/get?access_token=%s&next_openid=%s' % (
            self.get_token(), next_openid)
        ans = requests.get(url_openid)
        openid = json.loads(ans.content)['data']['openid']
        return openid

    def get_shici(self):
        '''
        # 随机诗词句获取
        :return:
        '''
        url = 'https://v1.jinrishici.com/'
        headers = {"Content-Type": "application/json; charset=utf-8"}
        res = requests.get(url, headers=headers)
        api_lists = res.json()["list"]
        url_apis = api_lists[random.randint(0, len(api_lists))]
        url_api = list(url_apis.values())[0]
        res_shici = requests.get(url=url_api, headers=headers)
        shici_data = res_shici.json()
        zuozhe = shici_data["author"]
        shi_name = shici_data["origin"]
        nr = shici_data["content"]
        return zuozhe, shi_name, nr

    def sendmes(self):
        '''
        推送到微信公众号
        :return:
        '''
        author, origin, content = self.get_shici()
        url = 'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={}'.format(self.get_token())
        headers = {"Content-type": "application/json"}
        for index, template_id in enumerate(self.get_openid()):
            body = {
                "touser": template_id,  # 接收内容的用户openid
                "template_id": self.template_id,  # 模板ID
                "url": f"https://baike.baidu.com/item/{origin}",  # 可跳转的链接
                # "topcolor": "#FF0000",
                "data": {
                    "city": {"value": '中国-西安', "color": '#00EC00'},  # 颜色功能已失效,2023年5月4日已改版,不支持颜色
                    'author': {'value': author},
                    'origin': {'value': origin},
                    'content': {'value': content}
                }
            }
            res = requests.post(url, json=body, headers=headers)
            print('推送成功') if res.json()['errmsg'] == 'ok' else print(f'用户{template_id}推送失败')


if __name__ == '__main__':
    push = WechatSendmes(appid_data,secret_data,template_id_data)
    push.sendmes()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/670681.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于TCP/UDP的Socket编程

---- socket概述: socket是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。 socket起源于UNIX,在Unix一切皆文件哲学的思想下,socket是一种"打开—读/写…

springboot启动流程 (3) 自动装配

在SpringBoot中,EnableAutoConfiguration注解用于开启自动装配功能。 本文将详细分析该注解的工作流程。 EnableAutoConfiguration注解 启用SpringBoot自动装配功能,尝试猜测和配置可能需要的组件Bean。 自动装配类通常是根据类路径和定义的Bean来应…

005 Settings可以直接通过AndroidStudio安装并调试(二)——Settings 打release包遇到的问题

一.背景 Settings迁移到AndroidStudio中直接打release包是有各种问题的,打不出来包,这里我们详细来描述下Settings打包出现的问题及解决方案。 二.Type com.android.settingslib.widget.BuildConfig is defined multiple times 首先遇到的拦路虎,也是最繁琐的包名冲突,之…

为什么配电室总出故障?这一点你做对了吗

配电室是供电系统中非常关键的组成部分,负责对电能进行分配和控制。然而,传统的配电室监控方式存在一些局限性,如人工巡检的局限性、监测数据获取困难、安全隐患无法及时发现等。 因此,为了提高配电室的管理水平、确保供电系统的安…

剑指offer03.数组中重复的数字

看到这道题的第一眼想到的是先给它排序,然后双指针从左往右遍历,写了一个冒泡排序,但是我想到了应该会超时,因为冒泡时间复杂度是n的平方,输入大小时10000,肯定会超时,然后右又看了一下题目看到…

SpringCloud Alibaba入门之用户子模块开发

在上一章的基础上进行子模块的开发SpringCloud Alibaba入门之创建多模块工程_qinxun2008081的博客-CSDN博客 一、引入SpringBoot 我们在父项目统一管理引入的jar包的版本。我们采用父项目中以depencyMangement方式引入spring-boot,子项目依赖parent父配置即可。 &…

YGG 公会发展计划(GAP)第三季总结

2023年5月6日,Yield Guild Games(YGG)结束了其代币分配系统——公会发展计划(GAP)的第三季,向社区成员提供了更多奖励,以表彰他们对公会和参与游戏的宝贵贡献。 第三季对 GAP 进行了一些升级&am…

uniapp和springboot微信小程序开发实战:前端架构之微信小程序开发表单提交功能

文章目录 前言前端代码后端代码controller层service层总结前言 基本上很多项目都有类似于意见反馈、留言等形式的表单提交功能,今天给大家介绍的是使用uniapp和vue组件实现的表单提交功能。其效果如下: 前端代码 <template><view class="body"><…

Jmeter接口测试-MD5加密-请求验签

目录 前言&#xff1a; 第一部分&#xff1a;先准备好Jmeter 第二部分&#xff1a;编写MD5加密-请求验签的脚本 第三部分&#xff1a;执行脚本 前言&#xff1a; JMeter是一款常用的接口测试工具&#xff0c;对于需要进行加密验证的接口&#xff0c;我们可以使用MD5加密算…

HOOPS Exchange SDK 2023 Crack

领先的 CAD 导入和导出库 使用 HOOPS Exchange SDK 将 30 多种 CAD 文件格式导入您的应用程序以进行 CAD 数据转换&#xff0c;通过单个 API 对 2D 和 3D CAD 文件格式&#xff08;包括 CATIA、SOLIDWORKS、 Inventor、Revit™™、Creo、NX™、Solid Edge 等&#xff09;提供快…

Nvidia官方解码性能

NVIDIA VIDEO CODEC SDK | NVIDIA Developer 1080P解码性能&#xff1a; 720P解码性能&#xff1a; 详细的参见官方的链接地址&#xff0c;对于GPU的解码fps能力&#xff0c;可以作为评估参照&#xff01;

【服务器远程工具】一款好用的xshell

这里写目录标题 背景Tabby简介安装使用SSHSFTPPowerShellGit 设置外观颜色快捷键窗口 插件支持总结 背景 作为一名后端开发&#xff0c;我们经常需要和Linux系统打交道&#xff0c;免不了要使用Xshell这类终端工具来进行远程管理。今天给大家推荐一款更炫酷的终端工具Tabby&…

C++核心编程——详解函数模板

纵有疾风起&#xff0c;人生不言弃。本文篇幅较长&#xff0c;如有错误请不吝赐教&#xff0c;感谢支持。 &#x1f4ac;文章目录 一.模板的基础知识①为什么有模板&#xff1f;②初识模板 二.函数模板①函数模板的定义②函数模板的使用③函数模板实例化1️⃣隐式实例化2️⃣显…

QAC用户使用手册

文章目录 1 QAC介绍1.1 QAC简介1.2 QAC dashboard简介 2 QAC使用&#xff08;基本操作&#xff09;2.1 创建QAC工程2.2 创建QAC工程2.3 添加代码到QAC工程2.4 添加代码到QAC工程2.5 上传分析报告及结果 1 QAC介绍 1.1 QAC简介 Helix QAC是Perforce公司(原PRQA公司)产品,主要用…

「Java核心技术大会 2023」——小解送书第三期

目录 共同深入探讨 Java 生态&#xff01;直播预约&#xff1a;视频号“IT阅读排行榜” 抽奖 大会简介 人工智能在22年、23年的再次爆发让Python成为编程语言里最大的赢家&#xff1b;云原生的持续普及令Go、Rust等新生的语言有了进一步叫板传统技术体系的资本与底气。我们必…

Android studio项目编译进安卓源码中

最近要做一个Android 8.1 的launcher &#xff0c;在Androidstudio上开发好基本功能后&#xff0c;移到Android源码中编译 1.在源码中创建代码目录 我开发基于展讯9820e平台&#xff0c;在如下目录创建好对应名字的文件夹 \vendor\sprd\platform\packages\apps\xxxLauncher创…

回收站清空了怎么恢复?3个妙招恢复数据

回收站被人为清空&#xff0c;被放入回收站的文件因时间过久而被电脑自动删除时&#xff0c;回收站里的数据清空了还能找到吗&#xff1f;是可以的这3个小妙招可以帮你还原回收站的数据&#xff01; 妙招一&#xff1a;借助注册表还原回收站清空的数据 可以尝试借助注册表还原…

Bootstrap 环境安装

文章目录 Bootstrap 环境安装下载 Bootstrap 文件结构预编译的 BootstrapBootstrap 源代码 HTML 模板实例Bootstrap CDN 推荐 Bootstrap 环境安装 Bootstrap 安装是非常容易的。本章将讲解如何下载并安装 Bootstrap&#xff0c;讨论 Bootstrap 文件结构&#xff0c;并通过一个实…

常见的Jmeter参数化方式总结

目录 前言&#xff1a; 参数化概念 参数化方式 二、用户变量 三、CSV数据文件 四、函数助手 前言&#xff1a; 在进行接口性能测试时&#xff0c;我们通常需要针对不同的场景进行参数化操作。JMeter是一款强大的性能测试工具&#xff0c;它提供了多种参数化方式&#xff0c;方便…

Idea在JavaSE项目中配置JavaEE

新建模块&#xff08;File --> new --> Module...&#xff09;javase项目 选择了这个webapp的支持之后&#xff0c;IDEA会自动给你生成一个符合Servlet规范的webpp目录结构。 如果说我们现在需要使用servlet的和JSP 那么需要servlet和JSP的jar包 也可以选择添加库,但是…