利用python编写钉钉机器人工作日提醒
1、需求说明
需要在工作日向部门钉钉群发送特定信息,本次是每日待办任务更新,同时有明天地区的天气预报以及打工寄语
2、获取钉钉机器人
在项目群中获取钉钉机器人, 主要是获取Webhook值,通过Webhook值向机器人发送消息。我的钉钉机器人认证方式为加密认证,所以需要特定的进行处理,获取url地址。请根据自己需求变更secret及url信息。
def get_url():timestamp = str(round(time.time() * 1000))secret = '你的SEC证书'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))url = "钉钉机器人url地址×tamp={}&sign={}".format(timestamp,sign)return url
三、获取本地明日天气预报
本人只获取了明天的天气预报,可获取未来5天天气预报,同时可以根据自己需要提醒明日是否需要带雨伞,不过本人并未添加。
#获取天气,可以根据data获取未来五日天气预报,本次只获取明日天气
def getWeather(name):url = 'http://wthrcdn.etouch.cn/weather_mini'response = requests.get(url, {'city': name})result = json.loads(response.content.decode())data = result.get('data').get('yesterday')data = result.get('data').get('forecast')i=data[1]temper = "气温范围:"+i.get('low').split(" ")[1] + "~" +i.get('high').split(" ")[1] +" "+i.get('type')+" "+i.get('fengli').replace('<![CDATA[', '').replace(']]>', '')+i.get('fengxiang')return temper
四、获取当日是否为工作日及时候为法定假假日
本人很苦逼,单双休,所以判断复杂了一点,各位如果是双休就很好判断
#判断时候为节假日
def is_rest(t):time_ratio = str(t).split(" ")[0]rest_list = ["2022-09-11","2022-09-10","2022-09-12","2022-10-01","2022-10-02","2022-10-03","2022-10-04","2022-10-05","2022-10-06","2022-10-07"]if time_ratio in rest_list:return Trueelse:return False
#判断节假日调休
def if_lieu(t):time_ratio = str(t).split(" ")[0]lieu = ["2022-10-08","2022-10-09"]if time_ratio in lieu:return Trueelse:return False
#判断当前日期是否为上班时间,双数周六即为上班,单数为休息,周天休息。节假日正常休息。
def is_workday(t):workday = t.isoweekday()if is_rest(t):return Falseelif if_lieu(t):return Trueelif workday == 6 and t.day % 2 == 0:return Falseelif workday == 7:return Falseelse:return True
五:打工人寄语
def get_spark():data = "不拼爹,不拼娘,不拼工作,不拼钱,我们运维人只拼命。努力!运维人! 敢上九天揽月,敢下五洋捉鳖,但却不敢迟到,因为迟到扣钱。早安,运维人! 只要我够努力,老板很快就能过上他想要的生活!该起床奋斗了!早安,运维人! 很喜欢运维人的一句话:打工赚不了几个钱,但是多打几份工可以让你没时间花钱。 老板对你说,加油小伙子,你好好努力,明年给你娶个漂亮的嫂子。加油,运维人! 世上有两种最耀眼的光芒,一种是太阳,一种是运维人努力的模样。早上好,运维人! 不打工没钱,打工也没钱,只不过打工一时饿不死而已,不打工很快就饿死。早安,运维人! 本人已上班,所有业务全面开启! 上班=有钱,有钱=快乐,所以上班=快乐。再这样上班下去,我的头顶就要跟机关枪一-样秃秃秃秃秃秃秃.......想要上班以外的生活".split(" ")return random.choice(data)
六:全部代码
# -*- coding: utf-8 -*-
import time
import hmac
import hashlib
import base64
import urllib.parse
import requests
import json
import random
from datetime import datetime
from chinese_calendar import is_holiday
#根据机器人签名规则获取url地址
def get_url():timestamp = str(round(time.time() * 1000))secret = 'SEC证书信息'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))url = "url信息×tamp={}&sign={}".format(timestamp,sign)return url#判断当前日期是否为上班时间,双数周六即为上班,单数为休息,周天休息。
# -*- coding: utf-8 -*-
import time
import hmac
import hashlib
import base64
import urllib.parse
import requests
import json
import random
from datetime import datetime
from chinese_calendar import is_holiday#根据机器人签名规则获取url地址
def get_url():timestamp = str(round(time.time() * 1000))secret = 'SEC证书信息'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))url = "https://oapi.dingtalk.com/robot/send?access_token=ef6aebecb7ead183952b9bec33b8a25e67456a398e9e8806c33b90ca57caec26×tamp={}&sign={}".format(timestamp,sign)return urldef is_holidays(date):'''判断是否为节假日'''Y = date.yearM = date.monthD = date.dayapril_last = datetime.date(Y, M, D)return is_holiday(april_last)#判断时候为节假日
def is_rest(t):time_ratio = str(t).split(" ")[0]rest_list = ["2022-09-11","2022-09-10","2022-09-12","2022-10-01","2022-10-02","2022-10-03","2022-10-04","2022-10-05","2022-10-06","2022-10-07"]if time_ratio in rest_list:return Trueelse:return False
#判断节假日调休
def if_lieu(t):time_ratio = str(t).split(" ")[0]lieu = ["2022-10-08","2022-10-09"]if time_ratio in lieu:return Trueelse:return False
#判断当前日期是否为上班时间,双数周六即为上班,单数为休息,周天休息。节假日正常休息。
def is_workday(t):workday = t.isoweekday()if is_rest(t):return Falseelif if_lieu(t):return Trueelif workday == 6 and t.day % 2 == 0:return Falseelif workday == 7:return Falseelse:return True
#获取天气,可以根据data获取未来五日天气预报,本次只获取明日天气
def getWeather(name):url = 'http://wthrcdn.etouch.cn/weather_mini'response = requests.get(url, {'city': name})result = json.loads(response.content.decode())data = result.get('data').get('yesterday')data = result.get('data').get('forecast')i=data[1]temper = "气温范围:"+i.get('low').split(" ")[1] + "~" +i.get('high').split(" ")[1] +" "+i.get('type')+" "+i.get('fengli').replace('<![CDATA[', '').replace(']]>', '')+i.get('fengxiang')return temperdef get_spark():data = "不拼爹,不拼娘,不拼工作,不拼钱,我们运维人只拼命。努力!运维人! 敢上九天揽月,敢下五洋捉鳖,但却不敢迟到,因为迟到扣钱。早安,运维人! 只要我够努力,老板很快就能过上他想要的生活!该起床奋斗了!早安,运维人! 很喜欢运维人的一句话:打工赚不了几个钱,但是多打几份工可以让你没时间花钱。 老板对你说,加油小伙子,你好好努力,明年给你娶个漂亮的嫂子。加油,运维人! 世上有两种最耀眼的光芒,一种是太阳,一种是运维人努力的模样。早上好,运维人! 不打工没钱,打工也没钱,只不过打工一时饿不死而已,不打工很快就饿死。早安,运维人! 本人已上班,所有业务全面开启! 上班=有钱,有钱=快乐,所以上班=快乐。再这样上班下去,我的头顶就要跟机关枪一-样秃秃秃秃秃秃秃.......想要上班以外的生活".split(" ")return random.choice(data)addr_word = "https://alidocs.dingtalk.com/i/team/dBgX430pnLNYOz8e/docs/dBgX4bRKEv3awG8e"
weather = getWeather('重庆市')
spark_data = get_spark()
data = {"msgtype": "text","text": {"content": "主题:每日待办任务更新 \n文档链接地址:{} \n明日天气预报:{} \n寄语:{}".format(addr_word,weather,spark_data)},"at": {"isAtAll": True}}if __name__ == '__main__':if is_workday(datetime.now()) == True:url = get_url()headers = {'Content-Type': 'application/json;charset=utf-8'}r = requests.post(url=url, headers=headers, data=json.dumps(data))else:quit()
七:设置定时任务,本人是Windows的定时任务,关键点如图所示:
八:效果如图所示
利用python编写钉钉机器人工作日提醒相关推荐
- python爬虫简单实例-Python 利用Python编写简单网络爬虫实例3
利用Python编写简单网络爬虫实例3 by:授客 QQ:1033553122 实验环境 python版本:3.3.5(2.7下报错 实验目的 获取目标网站"http://bbs.51tes ...
- 利用android实现汇率计算器,利用python编写一个汇率计算器
利用python编写一个汇率计算器 发布时间:2020-11-10 15:03:44 来源:亿速云 阅读:137 作者:Leah 这篇文章运用简单易懂的例子给大家介绍利用python编写一个汇率计算器 ...
- python编写游戏测试机器人客户端(一)
系列文章目录 python编写游戏测试机器人客户端(一) python编写游戏测试机器人客户端(二) python编写游戏测试机器人客户端(三) python编写游戏测试机器人客户端(四) pytho ...
- 利用python实现短信和电话提醒功能
有时候,我们需要程序帮我们自动检测某些事件的发生 这个需求是广泛存在的 因此,这里整理了利用python实现短信和电话提醒功能的方法 主要需要完成以下4个步骤: - 安装核心库:twilio - 注册 ...
- python提醒事件_利用python实现短信和电话提醒功能的例子
有时候,我们需要程序帮我们自动检测某些事件的发生 这个需求是广泛存在的 因此,这里整理了利用python实现短信和电话提醒功能的方法 主要需要完成以下4个步骤: - 安装核心库:twilio - 注册 ...
- 利用python编写手机脚本
利用python编写手机脚本 adb连接安卓模拟器 在手机里编写python脚本控制手机 如何使用python控制手机(以微信游戏跳一跳为例) adb连接安卓模拟器 链接(转载)https://www ...
- 利用Python编写代码实现消息自动回复
前言 利用python编写一小段代码可代码实现QQ.微信好友自动发消息的功能,从而达到"消息轰炸"的效果.代码很简单也很有趣,快来一起看看吧 目录 准备条件 焦点获取 代 ...
- 利用python编写一段手柄控制程序
好的,以下是一个简单的利用Python编写的手柄控制程序: 首先,需要导入所需的模块.这里我们使用 Pygame 和 Pygame 手柄模块,Pygame 可以让我们轻松地处理游戏输入和输出,而 Py ...
- 利用Python编写一个高斯正反算程序
一.前言 这次的高斯正反算程序是使用的Python编写的. 环境信息是:Win10.PyCharm 2021.3.1.PySide6 6.3.1.Python 3.9.9,基于QT Designer设 ...
- python数据预测_利用Python编写一个数据预测工具
利用Python编写一个数据预测工具 发布时间:2020-11-07 17:12:20 来源:亿速云 阅读:96 这篇文章运用简单易懂的例子给大家介绍利用Python编写一个数据预测工具,内容非常详细 ...
最新文章
- 创建虚拟机并安装CentOS操作系统
- java compareto方法怎么排序的_深入理解Java中Comparable和Comparator排序
- 关于安装VS2010过程中的错误
- 在ubuntu中使用cookiecutter搭建django项目时命令迟迟没有反应
- EasyUI下拉框级联
- 一文带你看完ZooKeeper!
- BlackBerry 应用程序开发者指南 第二卷:高级--第11章 管理通知(Notification)
- java启动项目报错,org.apache.catalina.lifecycleException..............以及解决方案
- AspectJ注解版和XML版
- offer上不写具体薪资合理吗_拿着OFFER当白菜?职场菜鸟不带这么玩的
- 拿什么重建你,巴黎圣母院?
- python主要用来做什么-python主要用来做什么?Python开发简单吗?
- 通过高速计算机网络和多媒体,全国2014.10办公自动化原理及应用试题
- DB2之CLOB对象用法
- python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
- C++的multi_map如何输出所有key值相等的元素
- python写界面c这算法_OpenCV算法精解:基于Python与C.pdf
- 20145201 《信息安全系统设计基础》期中总结
- 外链建设的22种方法
- Confluence(wiki)配置数据库及修改数据库地址
热门文章
- Bezier曲线的生成算法
- 计算机专业用集显电脑够用吗,科技教程:买电脑该选择独立显卡还是集成显卡好呢?...
- 李嘉诚先生给年轻人的忠告
- Asp.net WebAPI Attribute Rout
- 家用工具套装_家用工具套装种类多,这套实用的请收好
- Radware扩大企业业务
- 阅读圣经丨关于DAX(修订版)
- HTTP/HTTPS及CDN 原理
- 害羞的伦琴是如何掀起X-射线狂热的?
- 计算机教育软件参评作品例子,关于转发《关于举办滁州学院2012年教育软件评比活动的通知》的通知...