先在群里申请“群机器人”,得到access_token 然后调用接口: #!/usr/bin/python 从而快速解决问题,将线上问题尽早解决,那钉钉推送消息,它有什么好处呢?手机钉钉 消息可以第一时间查看,报警消息的即时性要求比较高,所以适合用钉钉通知。 本文介绍
先在群里申请“群机器人”,得到access_token 然后调用接口: #!/usr/bin/python 从而快速解决问题,将线上问题尽早解决,那钉钉推送消息,它有什么好处呢?手机钉钉 消息可以第一时间查看,报警消息的即时性要求比较高,
所以适合用钉钉通知。 本文介绍
实现推送的处理步骤:
创建机器人:
1、登录企业 - 拉取创建3人及其以上的群组 - 点击右键群设置 - 添加机器人,如图:
新建机器人:
给机器人取名:
创建完成:
获取机器人webhook: 复制webhook
>
就直接写脚本,给你举给例子:
编写工具:
1设计目标:
首先说一下我要工具的功能:
遍历某个目录下包括其下子目录中所有指定的后缀文件,然后为这些文件的头部插入指定的字符串。
2使用场景:
设计这样的工具起因是我最近在将之前 CSDN 中的博客搬运到自己的 Hexo 博客空间上,了解的应该知道,假如都是 Markdown 编写的话,搬运的时候只需要在文件头部加上如下的一串额外的内容:
---
title: 博客标题
date: 博客创建时间(例如:2016-09-03 17:15:22)
tags: 标签(如:[Hexo,Next],多个的话用,号隔开)
categories: 分类(如:Web)
---123456
标题 title 直接使用文件名称去掉 md 后缀即可;
时间 date 需要通过文件库获取文件的创建时间;
标签 tags 和分类 categories ,由于我的文件会根据分类放入不同的子目录下,所以直接获取当前文件所在目录的名称即可。
此外,为了在博客首页只展示部分内容,而不是展开博客的完整内容,还需要在博客中恰当的位置插入这个标签:<!--more--> ,通常加载第一段内容结束的位置。
3实现代码:
根据上面的思路,我们在 source/_posts 目录下创建一个工具脚本,起名为 SuitFileToHexopy ,然后依次完成以下步骤:
指定 Linux 环境下 Python 解释器目录,并指定编码方式:
#!/usr/bin/env python# -- coding: utf-8 --引入的模块:
在脚本开始的地方,最先需要做的事情就是把需要用到的模块都先引入进来,大致分析一下我们这个功能需要用到的模块:
import ospath,time1
遍历当前目录下所有 md 文件列表:
这就需要使用到 Python 的文件目录 *** 作模块 ospath ,使用 oslistdir 获取目录列表,然后通过 ospathsplitext 分割文件名称和后缀名,从而筛选合格的文件:
# 获取指定目录指定后缀名的文件列表def getFileList(path,endStr):'''获取指定目录下,指定后缀的文件列表'''r_list = []f_list = oslistdir(path) #获取目录列表for i in f_list: # 分离文件名和后缀名,过滤掉工具脚本
file_endStr = ospathsplitext(i)[1] # 判断是否是目录
if ospathisdir(i):
f_list1 = oslistdir(path+'/'+i) for j in f_list1: # 过滤出指定后缀 endStr 后缀的文件
if ospathsplitext(j)[1] == endStr: # 为了清晰目录把文件所在目录也标识出来
r_listappend(i+'/'+j) # print jdecode("string_escape")
elif file_endStr == endStr:
r_listappend(i)return r_list
这里发现了一个问题,就是在 ospathisdir(i) 在 2711 的版本莫名其妙地返回 false,需要做如下修改才能正常:
if file_endStr == '':i = ospathjoin(path, i) #=================〉这一行很必要
# print i
# 判断是否是目录
if ospathisdir(i):
获取文件的创建时间:
需要使用到 ostime 模块的功能:
# 获取文件创建时间def get_FileCreateTime(filePath):t = ospathgetctime(filePath) return TimeStampToTime(t)# 把时间戳转化为时间: 1479264792 to 2016-11-16 10:53:12'''def TimeStampToTime(timestamp):
timeStruct = timelocaltime(timestamp) return timestrftime('%Y-%m-%d %H:%M:%S',timeStruct)
获取博客标题:
其实就是从目录字符串中截掉后缀名,再截掉最后一个 / 之前的内容即可得到博客名称:
# 获取目录中去掉前面路径和后缀的文件名字def getFileSimpleName(filePath):name = ''
# 先去掉后缀
name = ospathsplitext(filePath)[0] # 获取最后一个斜杠位置
index = namerfind('/') # 找不到则返回 -1
if index != -1: # 截取斜杠后面到结尾内容
name = name[index+1:] # print name
return name
获取文件所在的目录名称作为页签值:
与获取博客名称思路略有相似,获取最后一个斜杠位置,截掉斜杠之后的内容,在获取一个最后一个斜杠位置,假如有则截取斜杠之后的内容即是文件所在目录的名称:
# 获得分类文件目录名称def getTypeNameByPath(filePath):fileTag = ''# 获取最后一个斜杠位置index = filePathrfind('/')# 找不到则返回 -1if index != -1: # 截取斜杠后面到结尾内容fileTag = filePath[:index] # 截掉前面部分
index = fileTagrfind('/') if index != -1:
fileTag = fileTag[index+1:]# print fileTagreturn fileTag
向文件中插入内容:
调用以上方法即可分别得到我们想要的信息:
# 指定目录path = '/'# 得到文件列表files = getFileList(path,'md')for i in files: print 'title: '+getFileSimpleName((idecode("string_escape"))) print 'date: '+get_FileCreateTime((path+idecode("string_escape"))) print 'tags: ['+getTypeNameByPath((idecode("string_escape")))+']'
接下来要做的就是把这些内容按照格式插入到文件中去,当然插入之前需要先检查文件中是否已经插入过类似的内容了,可以简单地通过检查开头 40 个字符串中是否包含这个字符串来判别:
'''---title: '''
关于展示分隔符 <!--more--> 插入的位置,大致逻辑是:第一个标题后面,而且刚好插入在第二个标题之前即可,而使用 Markdown 语法撰写的博客标题使用 # 来表示的,最终的插入方法如下:
# 向文件中插入指定数据def addHeadToFile(filePath,title,date,tags):file = open(filePath,"r")content = fileread()
index = content[:40]find('''---
title:''')# 添加if index == -1: print 'Undadded'
addContent = '''---
title: '''+title+'''
date: '''+date+'''
tags: ['''+tags+''']
categories: '''+tags+'''
<hr />
'''
# 检测是否插入部分显示标签
content = addContent + content
index = contentfind('''<!--more--> ''') if index == -1: # 获取第一段的位置
index = contentfind('''### ''') if index != -1: #print "first ### pos = ",index
# 下一个标题位置(在第二个标题之前插入即可)
pos = content[index:]find('''
#''',1) if pos != -1:
index += pos #print "second enter pos = ",index
content = content[:index]+'''
<!--more-->
'''+content[index:]
file = open(filePath,"w")
filewrite(content)else: #print 'file head had added'# 记得要关闭文件fileclose()
最后完整的调用过程:
# 指定目录path = '/'# 得到文件列表files = getFileList(path,'md')# 声明一些全局变量title = ''date = ''tags = ''for i in files:
title = getFileSimpleName(idecode("string_escape"))
date = get_FileCreateTime(path+idecode("string_escape"))
tags = getTypeNameByPath(idecode("string_escape")) print 'title: '+title print 'date: '+date print 'tags: ['+tags+']'
addHeadToFile(path+idecode("string_escape"),title,date,tags)
from qqbot import QQBotSlot as qqbotslot,RunBot
from random import randint
@qqbotslot
def onQQMessage(bot, contact, member, content):
#在这里过滤过来的输入, content的内容是监听qq上所有的输入
# 当群里有人@你的时候 传入过来的会被转化为[@ME]
# 所以使用 @ME 来过滤其他人在群里面at你
if '@ME' in content:
#四个参数的详细
#bot : QQBot 对象,提供 List/SendTo/Stop/Restart 四个接口,详见本文档第五节
#contact : QContact 对象,消息的发送者,具有 ctype/qq/uin/nick/mark/card/name 属性,这些属性都是 str 对象
#member : QContact 对象,仅当本消息为 群或讨论组 消息时有效,代表实际发消息的成员
#content : str 对象,消息内容
botSendTo(contact,'@'+ membername+ " 哈哈 ")
#这里是因为部分群里面的at无法转化为[@ME]所以自己过滤at自己的内容
elif '@' in content and '光' in content:
botSendTo(contact,'@'+ membername+ " 哈哈 ")
RunBot()```
以上就是关于一、python开发的服务程序,调用钉钉接口向钉钉群推送信息的软件能申请专利吗全部的内容,包括:一、python开发的服务程序,调用钉钉接口向钉钉群推送信息的软件能申请专利吗、python:消息推送 - 企业微信机器人推送、PYTHON怎样编写自动化等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)