热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

手把手教你使用云产品实现抖音同款微信早安推送(腾讯云Python版本)

大家好,我是小白当我发完上一篇文章后,后台有很多小伙伴私信我说自己没有云服务器,可以实现这个功能吗?答案是肯定的

大家好,我是小白

当我发完上一篇文章后,后台有很多小伙伴私信我说 自己没有云服务器,可以实现这个功能吗?

答案是肯定的!

老规矩,先上效果图!

是不是很赞👍

其实实现这个功能很简单,具体可以参考我的上一篇文章

最近抖音女友早安很火,那我也来跟个风,教程来咯(Python版)

虽然可以实现这个功能,但是大多数同学限制于没有服务器,因此无法继续操作

那么,这篇文章我将解决这个问题,只要有微信、百度或者支付宝或者华为其中一个账号即可

说到这儿,相信部分同学已经知道了要使用什么去实现了,没错,今天我要使用云产品实现上篇文章中的微信推送功能

免费!免费!免费!

在正式开始前,还是希望各位可以先去阅读一下上一篇文章,以免在接下来的描述中出现各种问号

链接:最近抖音女友早安很火,那我也来跟个风,教程来咯(Python版)


获取要使用的代码


代码地址: https://gitee.com/mxbai/say_good_morning

首先,需要将代码从我的Gitee仓库拉取到你本地,有两种办法,如下:

  • 如果你不是一位开发人员,或者电脑上没有 Git 工具,那么你只需要将上述地址中的 say_good_morning.py 文件内容复制粘贴到你本地,也可以按下图方式将该文件下载至你本地电脑

  • 如果你是一名开发同学,那可就很简单了,只需要打开你电脑的命令行,执行以下命令即可。请确保你的电脑已经安装了Git,否则会失败

git clone https://gitee.com/mxbai/say_good_morning.git

修改相应的配置

使用文本编辑器工具打开 say_good_morning.py,同样,按照我上一篇文章或Git中的描述将以下几个值改为自己的数据就可以了

  • appId 该值为你的微信公众平台测试号的appId
  • appSecret 该值为你的微信公众平台测试号的appSecret
  • user_open_ids 该值为你的微信公众平台测试号用户列表中的微信号
  • user_dict 按照代码中的格式修改
  • weather_url 对应的值可以在 https://www.yiketianqi.com/ 网址进行获取
  • yiju_url 对应的值可以在 https://www.mxnzp.com/ 网址进行获取

创建云函数

以下内容请认真阅读

打开任意一个云产品,此处以腾讯云为例

腾讯云 云函数SCF:https://cloud.tencent.com/product/scf
阿里云 函数计算FC:https://www.aliyun.com/product/fc
百度云 函数计算CFC:https://cloud.baidu.com/product/cfc.html

打开腾讯云,鼠标悬停在产品上,搜索 云函数,如下:

点击结果,跳转至都对应页面,如下图:

点击立即体验

点击前往控制台

随后点击左侧的函数服务,点击创建,新建一个函数

云函数基础配置

在基础配置中,函数类型选择 事件函数,函数名称可以随意写,但是注意只允许为英文;地域选择 北京 或者其他城市;运行环境选择 Python 3.7或更高版本

函数代码

在函数代码中,提交方法和执行方法都为默认即可,无需特殊改动

在代码编辑器中,将之前修改完的代码,粘贴进来

完整代码见文末

这里需要注意以下几点

第一行的编码类型切勿删除
将原代码中除 getDiffDays() 方法之外的所有代码全部放在编辑器原有的 main_handler()方法中,切记要有缩进
原有方法 main_handler(event, context) 中的两个默认入参务必保留,即使你未使用到

云函数高级配置

在高级配置中,保持默认即可

在触发配置中,触发方式选择定时触发,定时任务名称可以随意写,触发周期可以按需选择,此处我选择 自定义触发周期,Cron表达式按其要求格式填写(参考:https://cloud.tencent.com/document/product/583/9708)

填写完成后点击完成即可

测试云函数

完成后,依次点击 函数管理 -> 函数代码 点击左下角的 测试按钮进行云调试,控制台输出以下内容且微信有收到消息推送即表示成功

错误解决

如果出现以下报错,请按下面的方式进行处理

依次点击 函数管理 -> 函数代码 -> 终端 -> 新终端

在代开的终端中输入以下命令回车即可

pip3 install requests -t ./src

此步骤是手动将 requests 模块进行安装

目前仅发现腾讯云云函数需要手动安装模块,百度云和阿里云并未发现该问题


大功告成

到此,我们就摆脱了云服务器的束缚,使用免费云产品实现定时发送微信消息

好了,今天的内容就到此结束,有任何问题请 评论区留言 或者 后台私信


完整代码如下,请按需修改

# -*- coding: utf8 -*-
import json
import random
import requests
import datetime as dt# 获取日期间隔函数
def getDiffDays(date1, date2):date1 = dt.datetime.strptime(date1, '%Y-%m-%d')date2 = dt.datetime.strptime(date2, '%Y-%m-%d')days = (date2 - date1).daysreturn daysdef main_handler(event, context):# 自己微信公众号的 appId 和 appSecretappId = ''appSecret = ''# 微信公众号请求 urlwxgzh_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + appId + "&secret=" + appSecret# 获取微信 access_tokenaccess_token_json = requests.get(wxgzh_url).json()access_token = access_token_json['access_token']# 用户 open_id 列表user_open_ids = ['']# 获取今天的日期today = str(dt.datetime.today())[:10]# 用户字典user_dict = {'': {# birthday格式:yyyy-MM-dd'birthday': '','city': '北京'},'': {'birthday': '','city': '上海'}}# 获取天气信息"""获取地址:http://www.tianqiapi.com/ 参考返回{'nums': 7, 'cityid': '101010100', 'city': '北京', 'date': '2022-08-22', 'week': '星期一', 'update_time': '14:44', 'wea': '多云', 'wea_img': 'yun', 'tem': '32', 'tem_day': '32', 'tem_night': '19', 'win': '北风', 'win_speed': '2级', 'win_meter': '9km/h', 'air': '27', 'pressure': '998', 'humidity': '32%'}"""weather_url = 'https://www.yiketianqi.com/free/day?appid=&appsecret=&unescape=1&city='weather_text = requests.get(weather_url).json()# 每日一句yiju_url = 'https://www.mxnzp.com/api/daily_word/recommend?count=10&app_id=&app_secret='yiju_text = requests.get(yiju_url).json()# 这是一句话 可以自行修改message = ''# 自己的模板 IDtemplate_id = ''# 以下代码请勿修改# 循环发送消息for user in user_open_ids:# 获取用户信息user_info = user_dict[user]# 用户所在城市user_city = user_info['city']user_bir = user_info['birthday']user_weather_url = weather_url + user_city# 用户所在城市的天气信息user_weather_text = requests.get(user_weather_url).json()# 获取该用户还有多少天生日diff_bir = str(getDiffDays(today, user_bir))# 组装请求参数req_data = {'touser': user,'template_id': template_id,'data': {'first': {'value': message,'color': "#f00"},'data1': {'value': user_weather_text['date'],'color': "#000"},'data2': {'value': user_weather_text['week'],'color': "#000"},'data3': {'value': user_weather_text['tem'],'color': "#FF8800"},'data4': {'value': user_weather_text['city'],'color': "#000"},'data5': {'value': user_weather_text['wea'],'color': "#000"},'data6': {'value': user_weather_text['tem_night'],'color': "#00BBFF"},'data7': {'value': user_weather_text['tem_day'],'color': "#FF0000"},'data8': {'value': user_weather_text['win'],'color': "#00AA55"},'data9': {'value': user_weather_text['win_speed'],'color': "#00AA55"},'data10': {'value': diff_bir,'color': "#FF0000"},'data11': {'value': yiju_text['data'][random.randint(1, 10)]['content'],'color': "#FF0000"}}}'''数据转换,发送请求'''json_data = json.JSONEncoder().encode(req_data)url = 'https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=' + access_tokenres = requests.post(url, data=json_data)res_text = json.JSONDecoder().decode(res.text)if res_text['errcode'] == 0:print(f'用户 {user} 发送成功')


推荐阅读
  • 在开发过程中,我最初也依赖于功能全面但操作繁琐的集成开发环境(IDE),如Borland Delphi 和 Microsoft Visual Studio。然而,随着对高效开发的追求,我逐渐转向了更加轻量级和灵活的工具组合。通过 CLIfe,我构建了一个高度定制化的开发环境,不仅提高了代码编写效率,还简化了项目管理流程。这一配置结合了多种强大的命令行工具和插件,使我在日常开发中能够更加得心应手。 ... [详细]
  • Webdriver中元素定位的多种技术与策略
    在Webdriver中,元素定位是自动化测试的关键环节。本文详细介绍了8种常用的元素定位技术与策略,包括ID、名称、标签名、类名、链接文本、部分链接文本、XPath和CSS选择器。每种方法都有其独特的优势和适用场景,通过合理选择和组合使用,可以显著提高测试脚本的稳定性和效率。此外,文章还探讨了在复杂页面结构中如何灵活运用这些定位技术,以应对各种挑战。 ... [详细]
  • 在 CentOS 7 系统中安装 Scrapy 时遇到了一些挑战。尽管 Scrapy 在 Ubuntu 上安装简便,但在 CentOS 7 上需要额外的配置和步骤。本文总结了常见问题及其解决方案,帮助用户顺利安装并使用 Scrapy 进行网络爬虫开发。 ... [详细]
  • Python 程序转换为 EXE 文件:详细解析 .py 脚本打包成独立可执行文件的方法与技巧
    在开发了几个简单的爬虫 Python 程序后,我决定将其封装成独立的可执行文件以便于分发和使用。为了实现这一目标,首先需要解决的是如何将 Python 脚本转换为 EXE 文件。在这个过程中,我选择了 Qt 作为 GUI 框架,因为之前对此并不熟悉,希望通过这个项目进一步学习和掌握 Qt 的基本用法。本文将详细介绍从 .py 脚本到 EXE 文件的整个过程,包括所需工具、具体步骤以及常见问题的解决方案。 ... [详细]
  • 本文介绍了 Vue 开发的入门指南,重点讲解了开发环境的配置与项目的基本搭建。推荐使用 WebStorm 作为 IDE,其下载地址为 。安装时请选择适合您操作系统的版本,并通过 获取激活码。WebStorm 是前端开发者的理想选择,提供了丰富的功能和强大的代码编辑能力。 ... [详细]
  • 七款高效编辑器与笔记工具推荐:KindEditor自动换行功能解析
    本文推荐了七款高效的编辑器与笔记工具,并详细解析了KindEditor的自动换行功能。其中,轻笔记QingBiJi是一款完全免费的记事本软件,用户可以通过其简洁的界面和强大的功能轻松记录和管理日常事务。此外,该软件还支持多平台同步,确保用户在不同设备间无缝切换。 ... [详细]
  • 本文介绍了如何使用 Node.js 和 Express(4.x 及以上版本)构建高效的文件上传功能。通过引入 `multer` 中间件,可以轻松实现文件上传。首先,需要通过 `npm install multer` 安装该中间件。接着,在 Express 应用中配置 `multer`,以处理多部分表单数据。本文详细讲解了 `multer` 的基本用法和高级配置,帮助开发者快速搭建稳定可靠的文件上传服务。 ... [详细]
  • 在尝试对 QQmlPropertyMap 类进行测试驱动开发时,发现其派生类中无法正常调用槽函数或 Q_INVOKABLE 方法。这可能是由于 QQmlPropertyMap 的内部实现机制导致的,需要进一步研究以找到解决方案。 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • 在Ubuntu上安装MySQL时解决缺少libaio.so.1错误及libaio在MySQL中的重要性分析
    在Ubuntu系统上安装MySQL时,遇到了缺少libaio.so.1的错误。本文详细介绍了如何解决这一问题,并深入探讨了libaio库在MySQL性能优化中的重要作用。对于初学者而言,理解这些依赖关系和配置步骤是成功安装和运行MySQL的关键。通过本文的指导,读者可以顺利解决相关问题,并更好地掌握MySQL在Linux环境下的部署与管理。 ... [详细]
  • 在使用 SQL Server 时,连接故障是用户最常见的问题之一。通常,连接 SQL Server 的方法有两种:一种是通过 SQL Server 自带的客户端工具,例如 SQL Server Management Studio;另一种是通过第三方应用程序或开发工具进行连接。本文将详细分析导致连接故障的常见原因,并提供相应的解决策略,帮助用户有效排除连接问题。 ... [详细]
  • 在 Ubuntu 系统中安装 Python pip 时遇到错误的解决方案 ... [详细]
  • Netty框架中运用Protobuf实现高效通信协议
    在Netty框架中,通过引入Protobuf来实现高效的通信协议。为了使用Protobuf,需要先准备好环境,包括下载并安装Protobuf的代码生成器`protoc`以及相应的源码包。具体资源可从官方下载页面获取,确保版本兼容性以充分发挥其性能优势。此外,配置好开发环境后,可以通过定义`.proto`文件来自动生成Java类,从而简化数据序列化和反序列化的操作,提高通信效率。 ... [详细]
  • 在使用 `requests` 库进行 HTTP 请求时,如果遇到 `requests.exceptions.SSLError: HTTPSConnectionPool` 错误,通常是因为 SSL 证书验证失败。解决这一问题的方法包括:检查目标网站的 SSL 证书是否有效、更新本地的 CA 证书库、禁用 SSL 验证(不推荐用于生产环境)或使用自定义的 SSL 上下文。此外,确保 `requests` 库和相关依赖项已更新到最新版本,以避免潜在的安全漏洞。 ... [详细]
  • 基于 Bottle 框架构建的幽默应用 —— Python 实践 ... [详细]
author-avatar
红太郎的等待_921
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有