【python】定时钉钉发送知乎爆读里消息,
本帖最后由 固水 于 2022-10-10 10:59 编辑最近看了https://www.52pojie.cn/thread-1651017-1-1.html这个帖子,改写了下用钉钉机器人助手推每日消息
目前是设置在钉钉群里,能不能只给自己发,没试过
原理都在钉钉机器人上可以自己看:
1,新建机器人 ,设置秘钥,获取webhookhttps://attach.52pojie.cn//forum/202208/15/121035mkcyp366yrjvu0jp.png?l
2,代码部分# # !/usr/local/bin/python3import schedule
import datetime
import requests as req
import time
import hmac
import hashlib
import base64
import urllib.parse
import requests
def get_zhihu():
"""
:return: 返回每日爆读json数据
"""
headers = {
'user-agent':
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'
}
r = req.get('https://news-at.zhihu.com/api/4/news/latest',
headers=headers)# 获取知乎API
return r.json()['stories']
def btns_():
'''
:return: 返回get_zhihu处理过的数据用于send_ding的json_data请求参数
'''
a = get_zhihu()
c = []
for i in a:
for key in list(i.keys()):
if key not in ["title", 'url']:
del i
i['actionURL'] = i.pop('url')
c.append(i)
return c
# 签名计算示例代码
def send_ding():
'''
:return: 无返回;请求接口,发送到钉钉群
'''
timestamp = str(round(time.time() * 1000))
secret = ''# 自己的加签
secret_enc = secret.encode('utf-8')
string_to_sign = '{}\n{}'.format(timestamp, secret)
string_to_sign_enc = string_to_sign.encode('utf-8')
hmac_code = hmac.new(secret_enc, string_to_sign_enc, digestmod=hashlib.sha256).digest()
sign = urllib.parse.quote_plus(base64.b64encode(hmac_code))
headers = {
# Already added when you pass json= but not when you pass data=
# 'Content-Type': 'application/json',
}
params = {
'access_token': '',# 自己的webhook里的access_token
'timestamp': f'{timestamp}',
'sign': f'{sign}',
}
json_data = {
"msgtype": "actionCard",# 可去钉钉文档更换其它样式
"actionCard": {
# "title": btns_()['actionURL'],
"text": datetime.datetime.now().strftime('%Y-%m-%d'),# 今日时间
"btnOrientation": "0",
"btns": btns_()
}
}
response = requests.post('https://oapi.dingtalk.com/robot/send', params=params, headers=headers, json=json_data)
def zhixing_work(job):
'''
:param job: 准备要执行的函数
:return: 无返回,定时执行
'''
# 引入schedule和time
# schedule.every(1).minutes.do(job)# 部署每1分钟执行一次job()函数的任务
# schedule.every().hour.do(job) #部署每×小时执行一次job()函数的任务
# schedule.every().day.at("10:30").do(job) #部署在每天的10:30执行job()函数的任务
# schedule.every().monday.do(job) #部署每个星期一执行job()函数的任务
schedule.every().monday.at("18:00").do(job)# 部署每周一的18:00执行函数的任务
schedule.every().tuesday.at("18:00").do(job)# 部署每周二的18:00执行函数的任务
schedule.every().wednesday.at("18:00").do(job)# 部署每周三的18:00执行函数的任务
schedule.every().thursday.at("18:00").do(job)# 部署每周四的18:00执行函数的任务
schedule.every().friday.at("18:00").do(job)# 部署每周五的18:00执行函数的任务
while True:
schedule.run_pending()
time.sleep(10)
# 15-17都是检查部署的情况,如果任务准备就绪,就开始执行任务。
if __name__ == '__main__':
zhixing_work(send_ding)# 把send_ding函数传给定时任务去定时执行
3,机器人及成品效果:https://attach.52pojie.cn//forum/202208/15/120200q3so34zd4sukl3dg.png?l
原来这个也能实现,我之前也有这个类似的想法,楼主太牛了,代码儿,我研究一下 学习了。python 不是很懂。
webhook 获取的链接 能给下吗? 厉害了,我也要研究一下。 +1,感谢楼主 我问下 后面这个定时执行任务的 是根据啥执行的。我目前有弄消息推送的钉钉机器人,不过我是做那个任务计划 定时执行的 zhang120300 发表于 2022-8-15 14:32
学习了。python 不是很懂。
webhook 获取的链接 能给下吗?
首先,给个币
其次,我录个gif你看下
无字情书 发表于 2022-8-15 15:58
我问下 后面这个定时执行任务的 是根据啥执行的。我目前有弄消息推送的钉钉机器人,不过我是做那个任务计划 ...
日期,具体我也不太懂,只是看这个模块有定时执行的功能才用的,你可以看下教程关于这个包的 固水 发表于 2022-8-15 17:28
首先,给个币
其次,我录个gif你看下
1,https://attach.52pojie.cn//forum/202208/15/173331bf2k0tjmjxeg0xd8.png?l
2,
3,
4,
无字情书 发表于 2022-8-15 15:58
我问下 后面这个定时执行任务的 是根据啥执行的。我目前有弄消息推送的钉钉机器人,不过我是做那个任务计划 ...
你回复了啥,我看不到啊
页:
[1]
2