# wechat-push-Multi
**Repository Path**: yangyang113/wechat-push-multi
## Basic Information
- **Project Name**: wechat-push-Multi
- **Description**: 微信测试号每日消息推送,给你的好朋友每日推送一条温馨消息吧!
多方案,零成本方案,本地电脑端方案,服务器挂载方案,云函数简易部署方案!
本项目讲解的非常详细,代码易懂,注释全面!欢迎大家来关注!
- **Primary Language**: Python
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 2
- **Created**: 2022-10-06
- **Last Updated**: 2022-10-06
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 微信测试号每日消息推送
> 本项目基本功能使用了Python的wechatpy,requests第三方库,以及内置的python库进行实现例如: time , random模块进行实现,欢迎大家进行使用体验
### 本项目提供版本说明
本项目提供了两个版本:
第一个版本挂载Linux服务器运行版本,也就是单一文件,其中代码包含有run.sh脚本,运行run.sh脚本添加自动执行任务!
脚本内容实则使用了crontab命令进行定时运行指令操作!
部署教程:【正在编写中...】
本作者文档站【新站点】:
第二个版本windows版本,windows版本因为之前有人使用Java版本打包做了,我这里也不再用pyexe进行二次打包了,大家可以前往另一个作者仓库进行查看安装操作!
如果有人想要java版本进行更改可以看这位作者的,这位作者做了个可执行化的exe执行文件,效果几乎相同调用内容api不同罢了!
下图是另一个java作者的可执行程序的下载地址!在阅读README的文末!
https://gitee.com/simeitol-sajor/wechat-push
然后还有一个可视化的windows程序,是一个抖音上的作者发布的,也可以去看看!
第三个版本腾讯云函数版本,vercel版本【正在开发中....】
第四个版本github action版本
部署教程:【正在编写中...】
本作者文档站【新站点】:
下面讲一讲我写的程序需要的api以及后续的可扩展操作!手把手教会特别详细!
:speech_balloon: 不会可以留评论进行讨论
:red_circle: 代码有实质性问题可以提交issue,作者会想办法解决的!
不做windows端的原因有很多,包括程序不稳定因素,本作者开发的几个内容基本是比较稳妥的执行方案!
## 项目效果展示

windows微信端截图,手机端同理。
### 本程序源代码运行
本程序是Python程序,主程序为main.py,其它为不同版本的程序。
您只需要安装Python ≥3.6 版本,并且确保pip可以正常使用即可运行本程序!
克隆本项目
```
git clone https://gitee.com/icbugcoder/wechat-push-multi.git
```
安装第三方库,在cmd命令行中运行,mac同理在终端或者iterm2中运行
```shell
pip install -r requirements.txt
```
修改完成对应选项,运行程序
```
windows: python main.py
macos/linux: python3 main.py
```
上述命令只运行一次,多时间段分别推送需要使用定时执行crontab命令!
:warning:程序运行时挂代理会报错
## 微信测试号申请
微信测试号平台地址:[点击前往微信测试号申请页面](https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login)
进入先使用微信登录,登录后会看到下图,我们首先要获取的信息是appID和appsecret,获取后粘贴至注释对应区域
[# appID #appsecret 注释下方项分别填写入内]

接口配置信息以及js接口安全域名暂时不用配置,可以做到正常使用!
然后我们要做的是扫描测试号二维码获取用户的openid填写入程序内
openid对应项目即为测试号显示的"微信号"

模板消息接口【我的配置】
```
标题: {{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}} 天
```
如果你不喜欢的话可以选择自定义接口!
自定义方法【需要看程序中data是怎么定义的】:
`{{data中的传入参数值.DATA}}`

例如我在自定义内容的python程序data中写入了如下内容
```
"birthday": {"value": birthday, "color": get_random_color()},
```
那它的模板消息接口表示方法即为: `{{birthday.DATA}}`
这个value值即等于前面定义类api数据请求的内容调用,现在这个步骤属于api数据整合准备传送阶段。
这样即可完成模板消息接口的定制了,其它接口同理!
## 相遇时间及生日设置
在参数设定注释区域内寻找`birthday`和`start_date`参数并设置参数值

#### 参数值格式
生日参数值格式:
**%month-%day 【用月份-日期格式填写,不要出现年份】**
相处开始日期参数值格式:
**使用年份-月份-日期的形式填写**
## 时间段消息模板的配置

预设了四个时间段,自行在代码中修改
:warning:如果时间段不在范围内请求的消息是无法发送出去的,会报错,返回错误信息!:warning:
### 程序版本更改须知 :warning:
本程序把各类需要填写的参数全部放到了 程序的开头位置,包括templateid等参数,请根据程序注释进行引导填写!

## 所需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到代码对应注释区域

填写区域[需要填写至 # 天行数据 下方的key = ' key填写于此 ' 内]

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

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

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

把这串私钥复制到我们代码对应注释区 [# 心知天气 注释 下方的 zxkey = ' apikey填写于此 ']
3.高德地图提供的天气api
> 高德开放平台需要进行个人实名认证!验证较为简单,使用认证的支付宝账号授权即可,详情见控制台弹窗指引!
进入控制台,创建应用


创建好应用后我们添加key

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

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

把key复制到代码对应填写区域[# 高德key 注释下一行的 gdkey = ' 此处粘贴key ']
#### 高德地图天气API地域设定
因为高德地图api需要根据地区的acode码设定进行获取天气信息
acode码如下方腾讯文档表格:
```text
【腾讯文档】AMap_adcode_citycode_20210406
https://docs.qq.com/document/DQkVXZFF6ckRMelll
```
大家进入查看acode码,使用ctrl+F输入城市区县的名称找到自己所在市区县的acode码

找到acode码后复制到我们代码中参数设置区域下的`cityacode = 'Acode编码',`

#### 心知天气API空气质量地区设定
请在代码中参数设置区域找到`location`项进行填写,这个是设定监测空气质量的地理位置,官方api中location项支持如下几种格式请自行选择使用!
官方空气质量api文档:[逐小时空气质量预报 API文档](https://seniverse.yuque.com/books/share/f4f9bf1a-d3d9-4a68-8996-950f8c88400e/size6p)


#### 对本项目源码更改需求的解释
代码中给出如下的API调用,如果需要删除请自行更改代码部分
自行修改def类或删除,删除的时候要注意推送时微信测试号平台的信息模板,以及下方的调用发送数据包推送的模板

请根据def后的定义类名称对推送内容及参数进行CRUD操作!

当然你也可以选择其它内容api进行调用,具体编写方法参照代码的写法和对应API的api文档的要求参数进行编写!
-----
Powered By icbugcoder