-
Notifications
You must be signed in to change notification settings - Fork 39
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
新增微信接口测试号、电子邮件通道,支持多类型随机图片,截断超长链接,修复Bug,拆分代码
- Loading branch information
Showing
13 changed files
with
1,155 additions
and
853 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,29 +1,27 @@ | ||
<div align=center><img src="https://urlshare.img.ink/2022/68919a2809dbb.png" alt="phone2"/></div> | ||
<div align=center><img src="https://urlshare.img.ink/2022/c1aacad5a9507.png" alt="phone2"/></div> | ||
<h1 align="center">DailyInfo</h1> | ||
<h6 align="center">基于企业微信的每日图文推送</h6> | ||
<h6 align="center">基于Python的每日图文推送</h6> | ||
|
||
## Notice | ||
|
||
### 受企业微信9月19日策略调整,新企业必须有认证、必须有备案域名,且二者信息一致情况下,才能使用自建应用。 | ||
🆙**2022年10月3日更新,新增微信接口测试号、电子邮件通道,支持随机图片多类型,修复Bug等,更新前请务必仔细了解相关内容,并做好所有代码的备份,详情请看 [更新日志](https://mp.weixin.qq.com/s/G8yf2eZ-9BH1rnK-dZkEcw) 。** | ||
|
||
### 新建企业用户暂时无法使用本项目,带来不便,深感抱歉! | ||
🆙**第一个公开的付费定制DailyTip日常提醒发布,支持获取自己准备的图片,支持21种天行数据,感兴趣的可以去看看~,详情请看 [更新日志](https://mp.weixin.qq.com/s/ZTDU6_vVSaNQJyu712hYDw) 。** | ||
|
||
### 9月19日前已建企业及应用的用户暂时不受此影响。 | ||
⚠️**受企业微信官方9月19日策略调整,新建企业用户在新建应用时需要配置可信域名,且备案信息与企业一致。有服务器和备案域名的朋友可以按照官方要求自行尝试配置,不能保证成功。没有上述条件的朋友暂时无法使用企业微信通道,请使用微信接口测试号/电子邮件通道。9月19日前已建企业及应用的用户暂时不受此影响。** | ||
|
||
❗︎︎**本项目采用 [GPLv3](https://www.gnu.org/licenses/gpl-3.0.txt) 协议,仅供个人学习和使用,未授权任何商业化、付费行为,包括但不限于源代码、教程、代建、代搭。使用本项目源码/教程即视为同意本条款,本人保留对一切违反本条款行为诉诸法律的权利。** | ||
💻**企业微信通道、带图文详情页面的接口测试号通道——只支持云服务器或腾讯云函数平台部署。** | ||
|
||
🆙**2022年9月16日更新,新增多城市疫情数据等功能,优化调整以往功能,更新前请务必仔细了解相关内容,并做好所有代码的备份,详情请看 [更新日志](https://mp.weixin.qq.com/s/Y44K7seceGKmCCOnDssb3g ) 。** | ||
💻**电子邮件通道、不带图文详情页面的接口测试号通道——支持任意平台部署。** | ||
|
||
❗︎︎**本项目采用 [GPLv3](https://www.gnu.org/licenses/gpl-3.0.txt) 协议,仅供个人学习和使用,不得用于其他用途,未授权任何商业化、付费行为。使用本项目源码/教程即视为同意本条款,本人保留对一切违反本条款行为诉诸法律的权利。** | ||
|
||
🔔**当前支持的内容过多,容易突破图文链接长度上限,请合理安排有关多城市、多日期等内容。** | ||
|
||
📖**扫描文末二维码,关注微信公众号 勃然大陆 ,回复 教程 即可获取最新部署教程地址。** | ||
|
||
🤔**有问题可以扫描文末二维码进群询问,有功能需求可联系群主定制。** | ||
|
||
💻**目前只支持云服务器或腾讯云函数等IP固定的平台部署。** | ||
|
||
🐞**已知Bug:云服务器部署Diary用户会因 ‘ 等字符的转义处理错误导致之后的内容无法显示。** | ||
|
||
## Introduction | ||
|
||
- Bing必应 每日壁纸 | ||
|
@@ -33,7 +31,8 @@ | |
- 和风天气 多城市天气预报 | ||
- 可点击卡片 自带图文展示页 | ||
- 可选单图文 / 多图文推送模式 | ||
- 多日期提醒 纪念日 / 单日 农历 / 公历 | ||
- 多日期提醒 纪念日 / 单日 农历 / 公历 | ||
- 可选企业微信 / 微信接口测试号 / 电子邮件通道 | ||
- 可自定义机器人名称 头像 卡片头图 标题 内容 称呼 | ||
- 详细的拓展模板 | ||
|
||
|
@@ -51,26 +50,33 @@ | |
|
||
## Preparation | ||
|
||
| 环境变量 | 含义 | 备注 | | ||
| :--------: | :----------------------------------------------------------: | :----: | | ||
| corpid | 企业微信企业ID | 必填 | | ||
| corpsecret | 企业微信应用Secret | 必填 | | ||
| agentid | 企业微信应用AgentId | 必填 | | ||
| qweather | 和风天气应用Key | 非必填 | | ||
| city | 天气预报地址<br />格式:省/市-市/区/县,多城市以&&间隔<br />例如:成都-双流&&江苏-江宁 | 非必填 | | ||
| beginname | 单日项目名称<br />只有某一年有的日子,多日期以&&分隔<br />例如:跟XX在一起&&某某某出生 | 非必填 | | ||
| beginday | 单日日期,公历格式20XX-XX-XX<br />农历年份前加n,多日期以&&分隔,注意与名称对应<br />例如:n2020-08-11&&2021-08-26 | 非必填 | | ||
| targetname | 纪念日名称<br />每年都有的日子,多日期以&&分隔<br />例如:某某某的生日&&结婚纪念日 | 非必填 | | ||
| targetday | 纪念日日期,公历格式20XX-XX-XX<br />农历年份前加n,多日期以&&分隔,注意与名称对应<br />例如:n2020-08-11&&2021-08-26 | 非必填 | | ||
| msgtype | 图文类型,默认单图文<br />1为单图文,2为多图文 | 非必填 | | ||
| link | 图文详情页网址,务必以 http:// 或 https:// 开头 | 非必填 | | ||
| call | 自定义称呼,例如:宝贝~ | 非必填 | | ||
| title | 自定义标题,例如:今天的推送来啦! | 非必填 | | ||
| content | 自定义第一段内容,例如:记得喝水水哦~ | 非必填 | | ||
| pic | 自定义头图链接,务必以 http:// 或 https:// 开头 | 非必填 | | ||
| pictype | 随机头图类型,默认fengjing<br />可选项(接口要求)meizi、dongman、fengjing、suiji、none<br />分别是妹子、动漫、风景、随机、单图文不显示图片 | 非必填 | | ||
| yqcity | 需要疫情数据的城市名称,只能是市级<br />多城市以&&分隔,例如:成都&&南京 | 非必填 | | ||
| tian | 天行数据APIKEY<br />填写即默认第一段内容增加彩虹屁<br />需要自行申请相关接口 | 非必填 | | ||
| 环境变量 | 含义 | | ||
| :--------: | :----------------------------------------------------------: | | ||
| corpid | 企业微信企业ID<br />需要发送企业微信消息时必填 | | ||
| corpsecret | 企业微信应用Secret<br />需要发送企业微信消息时必填 | | ||
| agentid | 企业微信AgentId<br />需要发送企业微信消息时必填 | | ||
| appid | 测试号appID<br />需要发送测试号消息时必填 | | ||
| appsecret | 测试号appsecret<br />需要发送测试号消息时必填 | | ||
| userid | 测试号后台用户微信号<br />需要发送测试号消息时必填<br />多用户以&&分割<br />例如:abc123&&def456 | | ||
| templateid | 测试号模板ID<br />需要发送测试号消息时必填 | | ||
| emailfrom | 发送邮件的邮箱地址<br />需要发送邮件时必填 | | ||
| emailtoken | 发送邮件的邮箱的授权码<br />需要发送邮件时必填 | | ||
| emailto | 接收邮件的邮箱地址<br />需要发送邮件时必填<br />多地址以&&分割<br />例如:[email protected]&&[email protected] | | ||
| qweather | 和风天气应用Key<br />需要天气预报时必填 | | ||
| city | 天气预报地址<br />需要天气预报时必填<br />格式:省/市-市/区/县,多城市以&&间隔<br />例如:成都-双流&&江苏-江宁 | | ||
| beginname | 单日事件名称<br />只有某一年有的日子,多日期以&&分隔<br />例如:跟XX在一起&&某某某出生 | | ||
| beginday | 单日日期<br />公历格式20XX-XX-XX,农历年份前加n<br />多日期以&&分隔,注意与名称对应<br />例如:n2020-08-11&&2060-08-26 | | ||
| targetname | 纪念日事件名称<br />每年都有的日子,多日期以&&分隔<br />例如:某某某的生日&&结婚纪念日 | | ||
| targetday | 纪念日日期<br />公历格式20XX-XX-XX,农历年份前加n<br />多日期以&&分隔,注意与名称对应<br />例如:n2020-08-11&&2021-08-26 | | ||
| msgtype | 图文类型,默认单图文<br />1为单图文,2为多图文 | | ||
| pic | 自定义固定头图链接<br />务必以 http:// 或 https:// 开头 | | ||
| call | 自定义称呼<br />例如:宝贝~ | | ||
| title | 自定义标题<br />例如:今天的推送来啦! | | ||
| content | 自定义第一段内容<br />例如:记得喝水水哦~ | | ||
| tian | 天行数据APIKEY<br />需要彩虹屁时必填 | | ||
| pictype | 随机头图类型,默认风景<br />可选项(接口要求)meizi、dongman、fengjing、suiji、none<br />分别是妹子、动漫、风景、随机、单图文不显示图片<br />多类型以&&分隔,例如:dongman&&fengjing | | ||
| yqcity | 需要疫情数据的城市名称<br>需要疫情数据时必填,只能是市级<br />多城市以&&分隔,例如:成都&&南京 | | ||
| link | 图文详情页网址<br />需要点击卡片进入页面时必填<br />务必以 http:// 或 https:// 开头 | | ||
|
||
## Deployment | ||
|
||
|
@@ -88,8 +94,8 @@ | |
|
||
- 提供极为详细的 **拓展模板** [template.py](./template.py) 用于大家自行拓展功能,玩得开心~ | ||
- 受企业微信的限制,2022年6月20日后新建应用必须配置企业可信IP,在此之前创建的应用不受此限制。建议使用 **云服务器或腾讯云函数** 等IP固定的方式,阿里云、华为云函数暂时均无此功能。 | ||
- 受企业微信API限制,超出字数限制部分文字将自动截断不展示。图文展示页面不受此限制,但仍受图片链接长度和文字长度的制约,**请合理安排有关多城市、多日期等内容**。 | ||
- 腾讯云日志服务CLS于2022年9月5日开始执行按量计费,请在完成测试后及时关闭日志投递并删除日志主题。**关闭日志方法**请在微信公众号回复 **日志**。 | ||
- 受企业微信API限制,超出字数限制部分文字将自动截断不展示。**请合理安排有关多城市、多日期等内容**。 | ||
- 腾讯云日志服务CLS于2022年9月5日开始执行按量计费,请在完成测试后及时关闭日志投递并删除日志主题。**关闭日志方法** 请在微信公众号回复 **日志**。 | ||
- 环境变量可通过设置系统环境变量 或 修改config.py完成配置,**系统环境变量优先级高于 config.py** 。 | ||
- **日期提醒 **会自动排序,越接近的时间越显示在上方,以保证提醒的有效性。 | ||
- **和风天气预报 **会根据天气文本信息自动更换对应的天气emoji图标。 | ||
|
@@ -102,11 +108,11 @@ | |
|
||
感谢所有支持、使用、打赏的用户,不足之处,多多包涵 | ||
|
||
欢迎Star、Fork、PR | ||
欢迎**Star、Fork、PR** | ||
|
||
欢迎关注微信公众号 **勃然大陆**,回复 **教程** 即可获得最新教程地址 | ||
|
||
 | ||
 | ||
|
||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,122 @@ | ||
''' | ||
Author: Thund1r [email protected] | ||
Date: 2022-09-22 14:16:12 | ||
LastEditTime: 2022-10-03 04:31:16 | ||
Description: API数据 | ||
Copyright (c) 2022 by Thund1r [email protected], All Rights Reserved. | ||
''' | ||
# -*- coding: utf8 -*- | ||
import requests | ||
import config | ||
import re | ||
import random | ||
|
||
|
||
pictype_list = config.get_list("pictype") | ||
tian = config.get("tian") | ||
|
||
|
||
# 获取天行彩虹屁 | ||
def get_chp(): | ||
if not tian: | ||
return None | ||
try: | ||
chp_url = f"http://api.tianapi.com/caihongpi/index?key={tian}" | ||
chp_res = requests.get(chp_url).json() | ||
return "🌈 " + chp_res["newslist"][0]["content"] | ||
except Exception as e: | ||
print("获取彩虹屁数据错误,请检查是否正确填写天行Key,是否申请彩虹屁接口:", e) | ||
return None | ||
|
||
|
||
# 获取随机图片链接数据 | ||
# 来自搏天API:https://api.btstu.cn/ | ||
def get_random_pic(): | ||
p_type_list = pictype_list | ||
p_type = "fengjing" | ||
if p_type_list and isinstance(p_type_list, list): | ||
p_type = random.choice(p_type_list) | ||
try: | ||
pic_url = f"https://api.btstu.cn/sjbz/api.php?format=json&lx={p_type}" | ||
pic_res = requests.get(pic_url).json()["imgurl"] | ||
return pic_res | ||
except Exception as e: | ||
print("获取随机图片数据错误:", e) | ||
return None | ||
|
||
|
||
# 获取bing每日壁纸数据 | ||
def get_bing(): | ||
try: | ||
bing_url = "https://cn.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1" | ||
bing_res = requests.get(bing_url).json() | ||
bing_pic = "https://cn.bing.com/" + bing_res["images"][0]["url"] | ||
bing_title = bing_res["images"][0]["title"] | ||
bing_content = re.sub( | ||
"\\(.*?\\)", "", bing_res["images"][0]["copyright"]) | ||
bing_tip = f"{bing_title}——{bing_content}" | ||
return { | ||
"bing_pic": bing_pic, | ||
"bing_tip": bing_tip | ||
} | ||
except Exception as e: | ||
print("获取必应数据错误:", e) | ||
return None | ||
|
||
|
||
# 获取金山词霸数据 | ||
def get_ciba(): | ||
try: | ||
ciba_url = "http://open.iciba.com/dsapi/" | ||
ciba_res = requests.get(ciba_url).json() | ||
ciba_en = ciba_res["content"] | ||
ciba_zh = ciba_res["note"] | ||
ciba_pic = ciba_res["fenxiang_img"] | ||
ciba_tip = f"🔤 {ciba_en}\n🀄️ {ciba_zh}" | ||
return { | ||
"ciba_tip": ciba_tip, | ||
"ciba_pic": ciba_pic | ||
} | ||
except Exception as e: | ||
print("获取金山词霸数据错误:", e) | ||
return None | ||
|
||
|
||
# 获取ONE一个图文数据 | ||
def get_one(): | ||
try: | ||
one_url = "https://apier.youngam.cn/essay/one" | ||
one_res = requests.get(one_url).json()['dataList'][0] | ||
one_id = "VOL."+one_res['id'] | ||
one_pic = one_res['src'] | ||
one_tip = f"✒️ {one_id} {one_res['text']}" | ||
return { | ||
"one_pic": one_pic, | ||
"one_tip": one_tip | ||
} | ||
except Exception as e: | ||
print("获取ONE一个图文数据错误:", e) | ||
return None | ||
|
||
|
||
# # 获取XXX自定义图片与文字 | ||
# def get_XXX(): | ||
# try: | ||
# XXX_url = "https://XXXX.XXX" | ||
# XXX_res = requests.get(XXX_url).json() | ||
# print("获取XXX自定义图片与文字json数据:", XXX_res) | ||
# XXX_item0 = XXX_res["键名"][n]["需要的数据键名"] | ||
# XXX_item1 = XXX_res["键名"][n]["需要的数据键名"] | ||
# XXX_pic = XXX_res["键名"][n]["需要的数据键名"] | ||
# XXX_tip = "✒️ " + XXX_item0 + "\n" + "🗓️ " + XXX_item1 | ||
# res = { | ||
# # 没有图片就删除下面这一句 | ||
# "XXX_pic": XXX_pic, | ||
# "XXX_tip": XXX_tip | ||
# } | ||
# print("获取XXX数据:", res) | ||
# return res | ||
# except Exception as e: | ||
# print("获取XXX数据错误:", e) | ||
# return None |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,48 +1,92 @@ | ||
''' | ||
Author: thund1r thuncoder@foxmail.com | ||
Date: 2022-08-23 09:36:39 | ||
LastEditTime: 2022-09-16 16:14:18 | ||
Description: 配置函数 | ||
Author: Thund1r thund1r@foxmail.com | ||
Date: 2022-09-22 03:13:11 | ||
LastEditTime: 2022-10-03 03:54:29 | ||
Description: 配置程序 | ||
Copyright (c) 2022 by thund1r thuncoder@foxmail.com, All Rights Reserved. | ||
Copyright (c) 2022 by Thund1r thund1r@foxmail.com, All Rights Reserved. | ||
''' | ||
|
||
# -*- coding: utf8 -*- | ||
import os | ||
SYS_CONFIG = { | ||
# 企业微信企业ID,必填 | ||
# 企业微信企业ID,非必填 | ||
# 需要发送企业微信消息时必填 | ||
"corpid": "", | ||
|
||
# 企业微信应用Secret,必填 | ||
# 企业微信应用Secret,非必填 | ||
# 需要发送企业微信消息时必填 | ||
"corpsecret": "", | ||
|
||
# 企业微信AgentId,必填 | ||
# 企业微信AgentId,非必填 | ||
# 需要发送企业微信消息时必填 | ||
"agentid": "", | ||
|
||
# 测试号appID,非必填 | ||
# 需要测试号发送时必填 | ||
"appid": "", | ||
|
||
# 测试号appsecret,非必填 | ||
# 需要测试号发送时必填 | ||
"appsecret": "", | ||
|
||
# 测试号后台用户微信号,非必填 | ||
# 需要测试号发送时必填 | ||
# 多用户以&&分割 | ||
# 例如:abc123&&def456 | ||
"userid": "", | ||
|
||
# 测试号模板ID,非必填 | ||
# 需要测试号发送时必填 | ||
"templateid": "", | ||
|
||
# 发送邮件的邮箱地址,非必填 | ||
# 需要发送邮件时必填 | ||
# 例如:[email protected] | ||
"emailfrom": "", | ||
|
||
# 发送邮件的邮箱的授权码,非必填 | ||
# 需要发送邮件时必填 | ||
# 请前往自己的邮箱设置中开启stmp功能并获取授权码 | ||
"emailtoken": "", | ||
|
||
# 接收邮件的邮箱地址,非必填 | ||
# 需要发送邮件时必填 | ||
# 多地址以&&分割 | ||
# 例如:[email protected]&&[email protected] | ||
"emailto": "", | ||
|
||
# 和风天气Key,非必填 | ||
# 需要天气信息时必填 | ||
"qweather": "", | ||
|
||
# 天气预报地址,非必填 | ||
# 需要天气信息时必填 | ||
# 格式:省/市-市/县/区,多地址以&&分隔 | ||
# 例如:四川-成都&&江苏-江宁 | ||
"city": "", | ||
|
||
# 纪念日名称,非必填 | ||
# 需要纪念日功能时必填 | ||
# 每年都有的日子,多日期以&&分隔 | ||
# 例如:某某某的生日&&结婚纪念日 | ||
"targetname": "", | ||
|
||
# 纪念日日期,非必填 | ||
# 需要纪念日功能时必填 | ||
# 公历格式20XX-XX-XX,农历年份前加n | ||
# 多日期以&&分隔,注意与名称对应 | ||
# 例如:n2020-08-11&&2021-08-26 | ||
"targetday": "", | ||
|
||
# 单日项目名称,非必填 | ||
# 需要单日功能时必填 | ||
# 只有某一年有的日子,多日期以&&分隔 | ||
# 例如:跟XX在一起&&某某某出生 | ||
"beginname": "", | ||
|
||
# 单日日期,非必填 | ||
# 需要单日功能时必填 | ||
# 公历格式20XX-XX-XX,农历年份前加n | ||
# 多日期以&&分隔,注意与名称对应 | ||
# 例如:n2020-08-11&&2021-08-26 | ||
|
@@ -60,6 +104,8 @@ | |
# 默认fengjing | ||
# 可选项meizi、dongman、fengjing、suiji、none | ||
# 分别是妹子、动漫、风景、随机、单图文不显示图片 | ||
# 多类型以&&分隔 | ||
# 例如:dongman&&fengjing | ||
"pictype": "", | ||
|
||
# 自定义标题,非必填 | ||
|
@@ -74,20 +120,22 @@ | |
# 例如:宝贝~ | ||
"call": "", | ||
|
||
# 需要疫情数据的城市名称,非必填 | ||
# 疫情数据的城市名称,非必填 | ||
# 需要疫情数据功能时必填 | ||
# 只能是市级,多城市以&&分隔 | ||
# 例如:成都&&南京 | ||
"yqcity": "", | ||
|
||
# 天行数据APIKEY,非必填 | ||
# 需要彩虹屁等数据时填写 | ||
# 需要彩虹屁功能时必填 | ||
"tian": "", | ||
|
||
# 图文详情页链接,非必填 | ||
# 需要卡片可点击进入详情页功能时必填 | ||
# 完成教程 配置页面 后再填写 | ||
# 腾讯云函数用户填写API网关触发网关网址 | ||
# 服务器用户请自行搭建Diary,填写已备案域名:端口号/show | ||
# 务必以http:// 或 https:// 开头 | ||
# 务必以 http:// 或 https:// 开头 | ||
"link": "" | ||
} | ||
|
||
|
Oops, something went wrong.