# wechat-push-gh-action
**Repository Path**: icbugcoder/wechat-push-gh-action
## Basic Information
- **Project Name**: wechat-push-gh-action
- **Description**: github action执行版本的微信消息推送代码。
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-08-25
- **Last Updated**: 2022-08-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 微信每日消息推送-github action版本
> 本版本使用了github 的 action功能进行提交请求
### github上不去解决办法 Watt Toolkit
微软商店搜!!Watt Toolkit
选择github后点击一键加速

### 程序结构目录介绍
.github/workflows/main.yml github action的配置文件
[AMap_adcode_citycode_20210406.xlsx](https://github.com/rmdocs/wxpush-message-ghaction/blob/master/AMap_adcode_citycode_20210406.xlsx) 高德地图ACODE代码列表
main.py 主程序,执行程序
requirements.txt
所需第三方模块名称,用于本地自定义使用,若仅需本项目提供的功能无需理会
## main.py时间段模板
本程序对不同的时间段采用了不同的消息模板进行推送

默认该项目只开了一个全时间段的消息模板,意味着每天无论触发几次,消息模板的项目是不会变的,但是项目的内容会改变
但如果你启动了多时间段就意味着你每次推送消息的内容和样式都不同,会有全新的体验
那么如何启动多个不同时间段的模板内容推送呢?
把我预留好的代码注释#号删掉,启动几个时间段,删几段

:warning: 注意触发时间必须要在时间段内否则会报错
:warning: 注意!!!github action的服务器使用的UTC0时区,根据地理知识可知北京在东八区UTC +8时区 ,所以设定时间需要比北京时间完八个小时!
例如:
北京时间 早上 8:00:00
UTC时区应该填写的时间是 0:00:00
而程序内时间要写的是UTC时区所以也写 0:00:00 进行触发!
### 模板消息接口【我的配置】
模板消息接口进入微信测试号平台配置
[微信公众平台 (qq.com)](https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login)

标题即为消息名称,自行配置!
这个是默认的发送模板也就是没有打开其它几个时间段触发的全时间段的消息接口模板,注意启动任意其它时间段,不能与任意一个时间段的时间段冲突 ,例如一个设定 6:00:00 - 8 :00:00
另一个设定为7:30:00 - 8:10:00 这样是不可以的会报错,必须要保持独立时间段!
这个模板可以作为参照进行更改。
```
标题: {{getSayLove.DATA}}
今日是: {{currentTime.DATA}}, 农历: {{nongli.DATA}}, {{week.DATA}}
当前时间: {{nowDate.DATA}}
地点: {{address.DATA}}
今天天气: {{dayweather.DATA}}转{{nightweather.DATA}}, {{winddirection.DATA}}风, 风速: {{windpower.DATA}}
现在天气: {{weather.DATA}}
最高气温: {{daytemp.DATA}} ℃
最低气温: {{nighttemp.DATA}} ℃
当前温度: {{temperature.DATA}}
空气质量: {{suggestion.DATA}}
一言:{{saying.DATA}}-{{source.DATA}}
注释: {{transl.DATA}}
特殊而又重要的日子:
距离你的生日还有 {{get_birthday.DATA}} 天
我们已经认识了 {{meeting.DATA}} 天
```
#### 测试号二维码
我们需要获取测试用户的微信openid也叫userid,需要配置环境变量!
扫描二维码授权自动获取,其中的微信号即为userid

## 环境变量的配置
首先fork本项目到自己的账户去

进入项目setting

找到Secrets--->Actions环境配置项

新建项目环境变量

填入name和value值

填写内容分别是name和value, value则对应的id,key等需要自行填写的值
name有下列项需要填写【复制英文部分,确保无空格】
- APP_ID 【微信测试号测试号信息获取appid填写value】
- APP_SECRET 【微信测试号测试号信息获取appsecret填写value】
- TEMPLATE_ID1 上面说明的接口模板id进行粘贴至value内
- TEMPLATE_ID2
- TEMPLATE_ID3
- TEMPLATE_ID4
四个TEMPLATE_ID 开启几个时间段填写几个。不开不用填写,对应的id1,2,3,4查看main.py templateid后面写的是几。
template1,2,3,4分别对应TEMPLATE_ID1/ID2/ID3/ID4

- USER_ID value为测试号二维码中的微信号上面提及过
- TIANXINGKEY value为天行数据API的账号秘钥,API申请秘钥教程看下文
- ZXKEY value为心知天气API的私钥,申请方法看下文
- GDKEY value为高德API开放平台的应用key,详细方法看下文申请教程
- BIRTHDAY value为生日日期 月-日,不要写年份,例如3-19
- START_DATE value为相处开始日期 使用年-月-日的形式填写,例如2022-8-25
- LOCATION value为心知天气空气质量监测地区英文拼写
- CITYACODE 高德地图天气情况获取,城市acode 参照仓库的excel表格的城市acode进行填写
TEMPLATEID我只填了一个TEMPLATEID1,如下图,这些环境变量必须要有!

## 所需API申请
需要申请对应账号去获取appkey
1.天行数据:https://www.tianapi.com/
【早安,晚安,彩虹屁语句调用】
内容API需要进行申请,请在天行数据api主页进行所需要api添加
申请操作如下图:



因为我们申请后的鉴权key就是我们的账户秘钥key,所以暂时不需要管接口调试问题,我们把所需api申请完成过后去查看下方的账户秘钥查看!
:warning: 本项目默认需要进行API申请的接口如下图,大家搜索申请即可:
本源码使用的都是免费接口其接口每天有次数限制,免费用户大多数是每日调用次数不超过100次,因为这些接口api其实可以手写,后期如果有时间的话会把常用的api写完开源

2.心知天气api
官网:https://www.seniverse.com/
注册后进入控制台,这个就是单一的天气api不做多的解释,详情查看下文秘钥apikey查看标题下的,心知天气api申请操作流程
3.高德地图api
[高德开放平台 | 高德地图API (amap.com)](https://lbs.amap.com/)
### 秘钥apikey查看申请
1.天行数据秘钥申请:进入控制台,进入我的秘钥,如下图

复制apikey到环境变量TIANXINGKEY中作为value值

2.高德地图api:对应地域天气调用!
3.心知天气API:空气质量等参数
见上文部分注册进入控制台后,先申请免费版产品,见下图

然后点击产品内容-->免费版

会有一个默认生成的一个api秘钥,然后我们点击小眼睛查看私钥
注意:根据API文档说明key为私钥,并不是公钥!

把这串私钥复制到我们环境变量zxkey,作为value值
3.高德地图提供的天气api
> 高德开放平台需要进行个人实名认证!验证较为简单,使用认证的支付宝账号授权即可,详情见控制台弹窗指引!
进入控制台,创建应用


创建好应用后我们添加key

选择web服务平台,web服务平台的api支持天气调用,然后编写名称,同意协议后提交即可
天气实名后给的调用次数也是比较多的,可以达到5000次每日

申请过后你就可以看到一窜key

把key复制到环境变量gdkey作为value值
#### 高德地图天气API地域设定
因为高德地图api需要根据地区的acode码设定进行获取天气信息
acode码如下方腾讯文档表格:
```text
【腾讯文档】AMap_adcode_citycode_20210406
https://docs.qq.com/document/DQkVXZFF6ckRMelll
```
大家进入查看acode码,使用ctrl+F输入城市区县的名称找到自己所在市区县的acode码

找到acode码后把acode复制到CITYACODE环境变量作为value值
#### 心知天气API空气质量地区设定
`location`项,这个是设定监测空气质量的地理位置
把城市名称的英文拼写写入LOCATION环境变量中作为value值
## github action配置文件
进入该路径 [.github/workflows/main.yml](https://github.com/rmdocs/wxpush-message-ghaction/blob/master/.github/workflows/main.yml)

编辑schedule下的cron命令,crontab命令写法查看菜鸟教程
[Linux crontab 命令 | 菜鸟教程 (runoob.com)](https://www.runoob.com/linux/linux-comm-crontab.html)

根据该结构示意图前后顺序对触发时间进行更改
0 0 * * * 即为UTC区0点触发也就是北京时间早上8点触发 第一个数字为分钟,第二个为小时
所以59 1 * * * 即为北京时间9点59分触发
如果你启用了多时间段,则该触发命令请参照菜鸟教程进行编写!
然后点击commit提交即可

### 自定义方法【需要看data是怎么定义的】

"这里的内容是标签调用的名称":{.....}
可以写成`{{这里的内容是标签调用的名称.DATA}}`
大括号内的value是我们在程序中定义类的内容
如果你前面写过类似于
```
new = new()
```
这样的代码那么 可以直接写成"value":"new"
如果你没有写请把value写成
"value":"new()"的形式,color的文字颜色复制前几个设定即可。
标签写好之后即可参照上方模板消息接口的示例进行编辑更改了!
---
Powered by icbugcoder!