from datetime importdatetimeimportjsonimporturllib.requestimportpymysql as pmsfrom apscheduler.schedulers.blocking importBlockingSchedulerfrom apscheduler.schedulers.background importBackgroundSchedulerimporttimeimportos#Mac下关闭ssl验证用到以下模块

importssl'''----------------------------------------------

# 需要CMD命令下安装以下支持库:

# pip install apscheduler

# pip install pymysql

# By wzy 2018-9-28

----------------------------------------------'''

#Mac下关闭ssl验证,不然会报错

ssl._create_default_https_context =ssl._create_unverified_context#你的钉钉机器人url

globalmyurl

my_url= "https://oapi.dingtalk.com/robot/send?access_token=XXXXXXXXXXXX"

defsend_request(url, datas):#传入url和内容发送请求

#构建一下请求头部

header ={"Content-Type": "application/json","Charset": "UTF-8"}

sendData= json.dumps(datas) #将字典类型数据转化为json格式

sendDatas = sendData.encode("utf-8") #python3的Request要求data为byte类型

#发送请求

request = urllib.request.Request(url=url, data=sendDatas, headers=header)#将请求发回的数据构建成为文件格式

opener =urllib.request.urlopen(request)#打印返回的结果

print(opener.read())defget_mysqldatas(sql):#一个传入sql导出数据的函数,实例为MySQL需要先安装pymysql库,cmd窗口命令:pip install pymysql

#跟数据库建立连接

conn = pms.connect(host='服务器地址', user='用户名', passwd='密码', database='数据库', port=3306, charset="utf8")#使用 cursor() 方法创建一个游标对象

cur =conn.cursor()#使用 execute() 方法执行 SQL

cur.execute(sql)#获取所需要的数据

datas =cur.fetchall()#关闭连接

cur.close()#返回所需的数据

returndatasdefget_ddmodel_datas(type):#返回钉钉模型数据,1:文本;2:markdown所有人;3:markdown带图片,@接收人;4:link类型

if type == 1:

my_data={"msgtype": "text","text": {"content": " "},"at": {"atMobiles": ["188XXXXXXX"],"isAtAll": False

}

}elif type == 2:

my_data={"msgtype": "markdown","markdown": {"title": " ","text": " "},"at": {"isAtAll": True

}

}elif type == 3:

my_data={"msgtype": "markdown","markdown": {"title":" ","text":" "},"at": {"atMobiles": ["188XXXXXXXX"],"isAtAll": False

}

}elif type == 4:

my_data={"msgtype": "link","link": {"text":" ","title": " ","picUrl": "","messageUrl": " "}

}returnmy_datadefmain():print('Main! The time is: %s' %datetime.now())#按照钉钉给的数据格式设计请求内容 链接https://open-doc.dingtalk.com/docs/doc.htm?spm=a219a.7629140.0.0.p7hJKp&treeId=257&articleId=105735&docType=1

#调用钉钉机器人全局变量myurl

globalmyurl#1.Text类型群发消息

#合并标题和数据

My_content = "hello, @188XXXXXXXX 这是一个测试消息"my_data= get_ddmodel_datas(1)#把文本内容写入请求格式中

my_data["text"]["content"] =My_content

send_request(my_url, my_data)#2.Markdown类型群发消息(MySQL查询结果发送)

#获取sql数据

sql = "SELECT branch_no,count(*) from wzy_customer_user group by branch_no order by branch_no"my_mydata=get_mysqldatas(sql)

str1= '\t\n\r'seq=[]for i inrange(len(my_mydata)):

seq.append(str(my_mydata[i]))

data=str1.join(seq)

data= data.replace('\'','')

data= data.replace('(','')

data= data.replace(')','')

data= data.replace(',','\t')print(data)

Mytitle= "#### XXX报表\r\n单位\t数量\t\n\r %s"my_Mytitle= Mytitle.join('\t\n') %data

my_data= get_ddmodel_datas(2)

my_data["markdown"]["title"] ="XXXX 通报"my_data["markdown"]["text"] =my_Mytitle

send_request(my_url, my_data)#3.Markdown(带图片@对象)

my_data = get_ddmodel_datas(3)

my_data["markdown"]["title"] = "系统预警"my_data["markdown"]["text"] = "#### 系统预警内容 \n > @188XXXXXXXX \n\n > ![screenshot](http://i01.lw.aliimg.com/media/lALPBbCc1ZhJGIvNAkzNBLA_1200_588.png)\n > ###### 20点00分发布 [详情](http://www.baidu.cn/)"send_request(my_url, my_data)#4.Link类型群发消息

my_data = get_ddmodel_datas(4)

my_data["link"]["text"] = "群机器人是钉钉群的高级扩展功能。群机器人可以将第三方服务的信息聚合到群聊中,实现自动化的信息同步。"my_data["link"]["title"] = "自定义机器人协议"my_data["link"]["messageUrl"] = "https://open-doc.dingtalk.com/docs/doc.htm?spm=a219a.7629140.0.0.Rqyvqo&treeId=257&articleId=105735&docType=1"send_request(my_url, my_data)if __name__ == "__main__":#定时执行任务,需要先安装apscheduler库,cmd窗口命令:pip install apscheduler

#随脚本执行

#scheduler = BlockingScheduler()

#后台执行

scheduler =BackgroundScheduler()#每隔20秒执行一次

scheduler.add_job(main, 'interval', seconds=20)'''***定时执行示例***

#固定时间执行一次

#sched.add_job(main, 'cron', year=2018, month=9, day=28, hour=15, minute=40, second=30)

#表示2017年3月22日17时19分07秒执行该程序

scheduler.add_job(my_job, 'cron', year=2017,month = 03,day = 22,hour = 17,minute = 19,second = 07)

#表示任务在6,7,8,11,12月份的第三个星期五的00:00,01:00,02:00,03:00 执行该程序

scheduler.add_job(my_job, 'cron', month='6-8,11-12', day='3rd fri', hour='0-3')

#表示从星期一到星期五5:30(AM)直到2014-05-30 00:00:00

scheduler.add_job(my_job(), 'cron', day_of_week='mon-fri', hour=5, minute=30,end_date='2014-05-30')

#表示每5秒执行该程序一次,相当于interval 间隔调度中seconds = 5

scheduler.add_job(my_job, 'cron',second = '*/5')'''scheduler.start()print('Press Ctrl+{0} to exit'.format('Break' if os.name == 'nt' else 'C'))try:#其他任务是独立的线程执行

whileTrue:pass

#time.sleep(60)

#print('进程正在执行!')

except(KeyboardInterrupt, SystemExit):#终止任务

scheduler.shutdown()print('Exit The Job!')

python自动接收钉钉信息_用Python实现阿里钉钉机器人读取数据库内容自动发群通知...相关推荐

  1. python自动抓取指定信息_使用python自动转发抓取的网页信息

    1.[代码][Python]代码 # -*- coding: utf-8 -*- from selenium import webdriver import time from email.heade ...

  2. python爬取本地天气信息_用Python写一个爬取中国天气网的终端版天气预报爬虫

    导语 前几篇文章介绍了爬取静态网站的主要方法.今天写一个小项目实践一下.本项目可以在终端窗口查询全国3400多个区县的当日天气信息和近七天天气信息. 实现效果 [Python爬虫]写一个爬取中国天气网 ...

  3. python爬取网上租房信息_用python爬取租房网站信息的代码

    自己在刚学习python时写的,中途遇到很多问题,查了很多资料,下面就是我爬取租房信息的代码: 链家的房租网站 两个导入的包 1.requests 用来过去网页内容 2.BeautifulSoup i ...

  4. 钉钉发群通知报{“errcode“:310000,“errmsg“:“keywords not in content“}解决办法

    网上查了好多都没查到,最后问同事才知道原来是有关键词这个东西,就是你创建钉钉群时会输入一个关键词,然后你发消息时必须得带有这个关键词才行,比如我这个钉钉群里的关键词是 自动化测试,我用代码发群通知的时 ...

  5. python 获取硬盘信息_使用python获取电脑的磁盘信息方法

    使用Python获取电脑的磁盘信息需要借助于第三方的模块psutil,这个模块需要自己安装,纯粹的CPython下面不具备这个功能. 在iPython交互界面中进行如下演示: 查看电脑的磁盘分区: I ...

  6. python网页信息_利用python处理网页信息

    在前几周的grep/sed/awk实战中提到,"和CoreSite - Any2 California接入商建立网络BGP邻居关系.从peeringdb上找到了所有接入商的信息,但是转移信息 ...

  7. python 文本框不能放表情_用Python自动生成表情包,生活不易多才多艺!

    "一图胜千言".不过这里要说的并不是数据可视化,而是一款全民向的产品形态--表情包!!!!表情包不仅仅是一种符号,更是一种文化:是促进社交乃至社会发展的动力之一,就像懒. 我们坚持 ...

  8. python爬取旅游信息_用Python爬取分析全国旅游数据-Go语言中文社区

    前言: Python对于本人来讲也是一个在逐渐学习掌握的过程,这次的内容就从旅游开始讲起,进入正文前首先附(fang)上(du)最令我垂涎欲滴的海鲜盛宴. 数据爬取: 最近几天朋友圈被大家的旅行足迹刷 ...

  9. python 循环定时器 timer显示数据_【Python】多线程、定时循环爬取优信二手车信息...

    爬虫 爬取优信二手车:循环遍历每页,获取相应的有价值字段信息,这里不详细阐释了. 多线程 Python中,使用concurrent.futures模块下的ThreadPoolExecutor类来实现线 ...

最新文章

  1. python 判断字典是否包含某个key,以及对应的value 值
  2. SQL防注入程序 v1.0
  3. [原创]微软网络协议数据分析工具 Microsoft Network Monitor 介绍
  4. HTML DOM Event对象
  5. python2版本异常_Python to.exe引发异常:此项目的版本控制需要sdisttarb
  6. Zen Garden驾到:首批Metal游戏已登录iTunes应用商店
  7. replace vfp_VFP字符串替换函数CHRTRAN()使用方法
  8. 华为路由交换工程师学习笔记汇总
  9. retrofit应用详解与源码解析--源码解析
  10. 软件设计模式概念与意义
  11. 搭建个人网站(免备案)
  12. Oracle 数据库认证考试
  13. android+清除循环动画,android自定义View之(4)-一键清除动画
  14. Yocto系列讲解[理论篇]26 - BitBake全过程(4)
  15. SAP web 开发 (第二篇 bsp 开发 mvc模式 Part1 )
  16. 为博客添加樱花飘落的效果
  17. IEC标准中type1 type2 type3输入
  18. 天邑ty1208z海思3798刷版本_[高安]天邑ty1208z晶晨s905lb免拆机强刷固件下载
  19. GSM模块的调试(二)
  20. svn: E170001报错的原因以及解决方案

热门文章

  1. 【完成一个基于STM32汇编程序的编写】
  2. 互联网安全---DDOS攻击
  3. 解密:404背后的故事
  4. 使用nodejs将bilibili缓存的视频转mp4格式
  5. PyQt的一个UI单元测试框架思路
  6. Oracle 10046 trace追踪脚本
  7. java作用域范围_JSP四大作用域属性范围
  8. 2021年烟花爆竹储存找解析及专业培训历年考试错题集锦
  9. springboot的mvn packing
  10. Makefile编写方法小结