|
1 |
| -# -详细教程地址: |
2 |
| -微信天气推送、每日课表推送、上课提醒、晚安心语及第二天课程推送 |
| 1 | +# 前言: |
| 2 | +最近发现dy很火的一个小项目,刚好想学习一下微信公众号推送相关知识。基于别人的项目(只有天气推送,原作者忘了抱歉!),**增加了一些自己的需求:1、每日推送天气的时候顺便推送当天的课程; 2、如果下一节有课,在上课前推送提醒; 3、每日晚安心语及第二天课程推送。** |
| 3 | +# 实现原理: |
| 4 | +最开始只有每天的天气推送(每天只需要定时推送一次就好),实现很简单,利用GitHub Actions创建一个定时的工作流就行。 |
| 5 | +增加需求后,最开始的想法不变,利用GitHub Actions创建工作流多跑项目,让程序一直执行,直到“晚安心语”推送完后就结束。但是有个**GitHub Actions有两个致命的限制**:1、一个月能够执行项目的总时常为2000分钟,程序一直执行很快就会花光时间! 2、假如你设置的每日推送时间是 7:40 , 由于GitHub Actions是排队执行,如果是高峰期会导致项目延迟执行(一般延迟20-40分钟),所以第二点直接否定了我们想要准时的需求。 |
| 6 | +**值得注意的是,如果我们手动触发GitHub Actions里面的工作流,则是实时执行(本项目部署时间一般是50s左右)。所以,问题转变,通过用腾讯云函数的定时功能来触发GitHub Actions里面的工作流文件,达到曲线救国!** |
| 7 | +利用腾讯云函数定时触发的功能,只需要在程序设置的每日提醒、每节课上课提醒、每日晚安提醒时间的前两分钟触发Actions里面的工作流文件就能**完美解决GitHub Actions时间限制,和定时延迟的弊端。** |
| 8 | +# 一、准备条件: |
| 9 | +## 1、GitHub账号,注册地址[(https://github.com/)](https://github.com/) |
| 10 | +## 2、微信公众平台账号,注册地址[(https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login)](https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login) |
| 11 | +## 3、腾讯云函数账号,注册地址[(https://cloud.tencent.com/)](https://cloud.tencent.com/) |
| 12 | +## 4、天行数据账号(用于获取晚安心语内容),注册地址[(https://www.tianapi.com/)](https://www.tianapi.com/) |
| 13 | +# 二、实现效果图 |
| 14 | +## 1、每日提醒 |
| 15 | + |
| 16 | + |
| 17 | +## 2、上课提醒 |
| 18 | + |
| 19 | +## 3、晚安心语及第二天课程提醒 |
| 20 | + |
| 21 | +# 三、步骤 |
| 22 | +## 1、拉取GitHub项目 |
| 23 | +将仓库里面的项目fork到自己仓库 |
| 24 | +GitHub项目地址:[https://github.com/ghwmx/WeiXinPost](https://github.com/ghwmx/WeiXinPost) |
| 25 | +## 2、更改项目中的配置文件:config.py |
| 26 | + |
| 27 | + |
| 28 | +## 3、微信公众平台相关配置,登录微信公众平台,免费注册接口测试公众号 |
| 29 | +复制**appID** 和 **appsecret** 填入**config.py** 对应位置 |
| 30 | +### ① |
| 31 | + |
| 32 | +### ②复制**appID** 和 **appsecret** |
| 33 | + |
| 34 | +### ③填入**config.py** 对应位置 |
| 35 | + |
| 36 | +**注意要填写在双引号里面** |
| 37 | +### ④复制 config.py 文件最下面的模板,分别添加到微信公众平台 |
| 38 | +解释:模板中{{***}}以外的文字是固定显示,如图第90行代码,“今天是破壳日的第:{{...}} 天”,这句话对应程序是一个计时器,可以更改为:今天是和。。。恋爱的第{{....}} 天、今天是。。。。等等,根据自己需求更改。 |
| 39 | +同理,“距离开学还有:{{....}} 天” ,是一个倒计时,可以更改为生日等等,生日暂时只支持阳历,农历可以根据自己需求更改主程序。 |
| 40 | +**复制的时候记得去除每行前面的 “#”**,可以先复制到txt文档里面整理好后再添加。 |
| 41 | + |
| 42 | +#### 复制模板 1并添加: |
| 43 | +**在微信公众平台,往下找到“模板消息接口”---->新增测试模板---->模板标题(就是微信上看到的标题)---->模板内容为刚才复制的内容----->提交** |
| 44 | + |
| 45 | + |
| 46 | + |
| 47 | + |
| 48 | + |
| 49 | +### ⑤复制模板ID,填到config.py的 template_id1 |
| 50 | +### ⑥后面的上课提醒模板 和 晚安心语模板同理 |
| 51 | + |
| 52 | +### ⑦扫描测试二维码,关注公众号,关注后复制微信号,填入config.py中的user |
| 53 | +**注意:需要填写到双引号里面** |
| 54 | + |
| 55 | + |
| 56 | +### ⑧保存修改 |
| 57 | + |
| 58 | + |
| 59 | +**至此,微信公众平台配置完成!** |
| 60 | +## 4、配置GitHub Actions |
| 61 | +### ①打开actions工作流文件模板.yml,并复制里面所有内容 |
| 62 | + |
| 63 | + |
| 64 | + |
| 65 | +### ②点击Actions,配置工作流文件 |
| 66 | + |
| 67 | +**选择 set up a workflow yourself** |
| 68 | + |
| 69 | +**删除所有内容,并将复制的内容粘贴到里面,保存** |
| 70 | + |
| 71 | + |
| 72 | +**点击Actions,会出现刚才新建的工作流文件** |
| 73 | + |
| 74 | +**测试工作流程是否正确** |
| 75 | + |
| 76 | + |
| 77 | +*若运行失败,点击进去,查看运行过程中产生的错误 |
| 78 | + |
| 79 | +*定位问题出现的原因,是环境配置不正确,还是程序本身的问题。以下问题是程序 main.py 第79行的函数:get_Today_Class运行时发生错误。原因:没有配置开学时间 |
| 80 | + |
| 81 | + |
| 82 | +### ③获取GitHub Token为后续腾讯云函数配置做准备 |
| 83 | +**点击个人设置** |
| 84 | + |
| 85 | + |
| 86 | +**滑动到最下面,选择‘开发者设置’** |
| 87 | + |
| 88 | + |
| 89 | + |
| 90 | + |
| 91 | + |
| 92 | + |
| 93 | + |
| 94 | + |
| 95 | + |
| 96 | + |
| 97 | + |
| 98 | + |
| 99 | + |
| 100 | +**至此,github配置完成!** |
| 101 | + |
| 102 | + |
| 103 | +## 5、配置腾讯云函数 |
| 104 | +### ①登录后搜索‘云函数’ |
| 105 | + |
| 106 | + |
| 107 | + |
| 108 | + |
| 109 | +**接下来会有一些身份验证** |
| 110 | + |
| 111 | + |
| 112 | +### ②完成相关认证后,选择‘函数服务’,‘新建’ |
| 113 | + |
| 114 | + |
| 115 | +**选择‘从头开始’,函数的名字随意,运行环境选择‘Python3.6’** |
| 116 | + |
| 117 | + |
| 118 | +**接下来更改函数体中的内容,打开GitHub中的 ‘txPost.py’ 复制所有内容** |
| 119 | + |
| 120 | + |
| 121 | + |
| 122 | + |
| 123 | +**粘贴到窗口中,替换其中的token,用户名等信息** |
| 124 | + |
| 125 | + |
| 126 | +**用户名/项目名 如图所示** |
| 127 | + |
| 128 | + |
| 129 | +**其余设置为默认** |
| 130 | + |
| 131 | + |
| 132 | + |
| 133 | + |
| 134 | + |
| 135 | +### ③创建触发函数的定时触发器,按图操作即可 |
| 136 | + |
| 137 | + |
| 138 | + |
| 139 | + |
| 140 | + |
| 141 | + |
| 142 | + |
| 143 | + |
| 144 | + |
| 145 | + |
| 146 | + |
| 147 | + |
| 148 | + |
| 149 | +**恭喜,你已经成功完成所有配置!** |
| 150 | + |
| 151 | +# 结束语 |
| 152 | + 这篇文章因为自己的原因写了很久,到现在写完已经并不是热门话题了哈哈哈哈。2022年暑假的时候在家折腾服务器,恰好看到了某音上给女朋友推送天气,啊啊啊啊,想着虽然没有女朋友,但是我是不是可以从别人的项目里面改一改,写一些自己的需求,学习一下推送的方法,诶!挂到自己的小NAS上岂不美滋滋。当我尝试把写好的程序挂到NAS上时发现小小NAS的性能是在太弱了! |
| 153 | + |
| 154 | +因为好朋友需要完成相关Python实验项目,所以又重新熟悉一遍,干脆就趁此机会把它圆满吧。教程应该还是比较详细,我尽可能每一步都截图。希望能够对大家有有些小帮助!感谢! |
0 commit comments