前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >python实现自动向钉钉群推送消息

python实现自动向钉钉群推送消息

原创
作者头像
墨紫羽墨
发布于 2021-12-12 11:13:35
发布于 2021-12-12 11:13:35
1.6K00
代码可运行
举报
文章被收录于专栏:FutureTesterFutureTester
运行总次数:0
代码可运行

此机器人只能向群内推送消息,不支持应答。

话不多说,先上代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import requests
import json
import time
import hmac
import hashlib
import base64
import urllib.parse
from bs4 import BeautifulSoup
import random
import time

# 签名
def sign(secret,timestamp): 
    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))
    # print(timestamp)
    # print(sign)
    sign_str= {"sign": sign,"timestamp":timestamp}
    return sign_str

# 钉钉消息
def send_msg(sign,timestamp):
    tim = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
    headers = {"Content-Type": "application/json"}
    readData = EveryDayStudy()
    imgurl = getImgUrl()
    data = {
     "msgtype": "markdown",
     "markdown": {
         "title":"每日一读",
         "text": "#### 今日鸡汤  \n> "+readData+" \n\n> ![screenshot]("+imgurl+") \n> ###### "+tim+" [更多](http://www.duanmeiwen.com/yulu/lizhi/46345.html) \n"
     },
     # @群内人员
      # "at": {
      #     "atMobiles": [
      #         "150XXXXXXXX"
      #     ],
      #     "atUserIds ": [
      #         "user123"
      #     ],
      #     "isAtAll": false
      # }
    }
    webh = webhook+'&timestamp='+timestamp+'&sign='+sign
    r = requests.post(webh, data=json.dumps(data), headers=headers)
    print(r.text)

# 每日一读 文字
def EveryDayStudy():
    num = random.randint(1,299)
    res = requests.get('http://www.duanmeiwen.com/yulu/lizhi/46345.html')
    res.encoding = 'gb2312'
    bs = BeautifulSoup(res.text, "html.parser")
    Datalist = []
    for i in bs.find_all("div", class_="content"):
        text1 = i.text
        for j in range(1,300,1):
            text2= text1.split(str(j)+'、')
            text3= text2[1].split(str(j+1)+'、')
            Datalist.append(text3[0])
        return Datalist[num]

# 图片
def getImgUrl():
    img=[]
    num = random.randint(1,17)
    headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36',
    'Content-Type':"text/html; charset=utf-8"
    }
    req_url= 'https://www.ivsky.com/bizhi/fengjing/'
    res = requests.get(url=req_url,headers=headers)
    res.encoding = 'utf-8'
    bs = BeautifulSoup(res.text, "html.parser")
    for i in bs.find_all("img"):
        imgtext = i
        imgstr = str(imgtext).split(' src="')
        imgstr1=imgstr[1].split('"/>')
        imgurl = 'https:'+imgstr1[0]
        img.append(imgurl)
    return img[num]
 
# 时间戳
timestamp = str(round(time.time() * 1000))
# 钉钉机器人配置
secret = '此处填写加签的秘钥'
webhook = 'https://oapi.dingtalk.com/robot/send?access_token=XXXXXX'
sign_str =sign(secret,timestamp)
sg = sign_str['sign']
send_msg(sg,timestamp)
下面简单介绍一下,向钉钉群推送消息是通过钉钉群机器人发送消息的,所以首先需要在测试群内新增一个机器人

步骤一:【电脑钉钉 】-【群聊】-【群设置】-【智能群助手】-【添加更多】-【添加机器人】-【自定义】-【添加】,编辑机器人名称和选择添加的群组。

步骤二:安全设置,可以选择自定义关键词和加签(脚本需要用到加签的秘钥)

如果机器人的配置不了解的话,请自行百度。

首先签名部分,可以在钉钉文档中找到,需要用到的是一个时间戳和加签的秘钥

然后发送钉钉消息部分,也需要这个时间戳,然后还需要一个签名得到的sign。

需要发送的文字和图片都是网上爬取的。

另外需要注意的是,发送消息的title是需要填新增机器人填写的关键字的,填错是发送不了消息的

最后一步,设置定时发送,如果条件允许,可以布置到Jenkins上

如果不能配置到Jenkins上,那就退而求其次了,在自己电脑上配置定时任务

具体的方法可以百度一下

https://www.it610.com/article/1298533114234085376.htm

https://jingyan.baidu.com/article/5d6edee227e38dd8ebdeec2f.html

原文地址

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
关于骨架屏与首屏渲染
参考链接: vue-content-loader page-skeleton-webpack-plugin vue-content-loader vue页面骨架屏
Ewall
2020/04/02
1.1K0
关于骨架屏与首屏渲染
前端-小程序构建骨架屏的探索
一般情况下,在首屏数据未拿到之前,为了提升用户的体验,会在页面上展示一个loading的图层,类似下面这个:
grain先森
2019/03/29
7620
前端-小程序构建骨架屏的探索
客户端骨架屏详解
一直以来,无论是Web还是iOS、Android的应用中,为了提升应用的加载等待这段时间的用户感知体验,各种技术层出不穷。其中,尤以菊花图以及由它衍生各种加载动画最为突出。
xiangzhihong
2020/01/14
4.2K0
客户端骨架屏详解
vue-cli3 配置骨架屏方案
最近在学vue,准备使用vue写一个移动端项目。考虑到首页白屏优化,需要实现骨架屏需求。
w候人兮猗
2020/07/01
1.3K0
so easy!网页骨架屏自动生成方案(dps)
什么是骨架屏呢?骨架屏(Skeleton Screen)是指在页面数据加载完成前,先给用户展示出页面的大致结构(灰色占位图),在拿到接口数据后渲染出实际页面内容然后替换掉。Skeleton Screen 是近两年开始流行的加载控件,本质上是界面加载过程中的过渡效果。
zz_jesse
2020/09/25
2.7K0
so easy!网页骨架屏自动生成方案(dps)
Vue项目骨架屏注入实践
相比于早些年前后端代码紧密耦合、后端工程师还得写前端代码的时代,如今已发展到前后端分离,这种开发方式大大提升了前后端项目的可维护性与开发效率,让前后端工程师关注于自己的主业。然而在带来便利的同时,也带来了一些弊端,比如首屏渲染时间(FCP)因为首屏需要请求更多内容,比原来多了更多HTTP的往返时间(RTT),这造成了白屏,如果白屏时间过长,用户体验会大打折扣,如果用户网速差,则FCP会更长。
前端下午茶
2018/10/22
1.9K0
Vue项目骨架屏注入实践
Vue项目骨架屏注入实践
相比于早些年前后端代码紧密耦合、后端工程师还得写前端代码的时代,如今已发展到前后端分离,这种开发方式大大提升了前后端项目的可维护性与开发效率,让前后端工程师关注于自己的主业。然而在带来便利的同时,也带来了一些弊端,比如首屏渲染时间(FCP)因为首屏需要请求更多内容,比原来多了更多HTTP的往返时间(RTT),这造成了白屏,如果白屏时间过长,用户体验会大打折扣,如果用户网速差,则FCP会更长。
青梅煮码
2023/03/02
5290
Vue项目骨架屏注入实践
【总结】1873- 一个前端非侵入式骨架屏自动生成方案
性能优化、减少页面加载时间、提升用户体验,是前端领域的一个永恒话题。在前后端分离、异步渲染在页面中被普遍应用的背景下,大量页面在用户访问时不可避免的会出现一段短时间白屏。目前的解决方案一般为以下几种:
pingan8787
2023/11/23
6350
【总结】1873- 一个前端非侵入式骨架屏自动生成方案
如何让你的网页“看起来”展现地更快 —— 骨架屏二三事
让网页展现的更快,官方说法叫做首屏绘制,First Paint 或者简称 FP,直白的说法叫做白屏时间,就是从输入 URL 到真的看到内容(不必可交互,那个叫 TTI, Time to Interactive)之间经历的时间。当然这个时间越短越好。
@超人
2021/02/26
1.3K0
如何让你的网页“看起来”展现地更快 —— 骨架屏二三事
干货 | 前端智能化探索,骨架屏低代码自动生成方案实践
ZiLin Wang,前端开发者,函数式编程爱好者,最近沉迷于低代码平台和WebAssembly;Ivan Zhang,擅长前端打杂,最近专注于Sketch插件和DesignOps平台;Sheila,携程资深前端开发工程师,关注前端性能优化。
携程技术
2021/09/10
2.3K0
干货 | 前端智能化探索,骨架屏低代码自动生成方案实践
你不可能知道的骨架屏玩法!
作者曾所在我司广告事业部,广告承载方式是以刮刮卡、大转盘等活动页进行展示,然后用户参与出广告券弹层。
秋风的笔记
2021/08/27
1.9K0
你不可能知道的骨架屏玩法!
自动化生成骨架屏的技术方案设计与落地
性能优化,减少页面加载等待时间一直是前端领域永恒的话题。如今大部分业务合作模式都是前后端分离方案,便利性的同时也带来了非常多的弊端,比如 FCP 时间显著增加(多了更多的 HTTP 请求往返的时间消耗),这也就造成了我们所说的白屏时间较长,用户体验较差的情况。
玖柒的小窝
2021/11/21
1.1K0
自动化生成骨架屏的技术方案设计与落地
使用预渲染提升SPA应用体验
在目前的前端领域,单页web应用(SPA)已经有了比较高的占有率,比较主流的web框架React、Angular、Vue几乎已经统治了前端市场。
Javanx
2019/09/05
2.9K0
使用预渲染提升SPA应用体验
Headless Chrome:服务端渲染JS站点的一个方案【上篇】【翻译】介绍Headless Chrome 预渲染页面
原文链接:https://developers.google.com/web/tools/puppeteer/articles/ssr 注:由于英文水平有限,没有逐字翻译,可以选择直接阅读原文 tips:Headless浏览器完全可以作为服务端渲染的一个替代方案,在服务端转化js 站点为静态html页面;在webserver 上运行Headless 浏览器完全可以预渲染现代js 模式的应用,增加响应速度,对SEO也更加友好 本篇涉及到的技术展示了如何通过Google Headless 框架(puppt
Jerremy
2018/06/13
2.1K0
webpack4大结局:加入腾讯IM配置策略,实现前端工程化环境极致优化
在此对webpack的性能优化进行几点声明: 在部分极度复杂的环境下,需要双package.json文件,即实行三次打包 在代码分割时,低于18K的文件没必要单独打包成一个chunk,http请求次数过多反而影响性能 prerender和PWA互斥,这个问题暂时没有解决 babel缓存编译缓存的是索引,即hash值,非常吃内存,每次开发完记得清理内存 babel-polyfill按需加载在某些非常复杂的场景下比较适合 prefetch,preload对首屏优化提升是明显 代码分割不管什么技术栈,一
Peter谭金杰
2019/08/02
2.1K0
基于Vue-SSR优化方案归纳总结
Vue-SSR相信大家都不陌生,与传统 SPA 相比,服务器端渲染 (SSR) 能够具备更好的SEO,方便搜索引擎爬虫抓取工具可以直接查看完全渲染的页面,除此之外,SSR能够在更短的时间内渲染出页面内容,通过在服务端填充数据吐出到客户端的方式,让用户有更好的用户体验。 前言 基于VueSSR的页面优化常有,而针对VueSSR的再优化不常有。前段时间有幸作为宇宙无敌上级特派看门员参加了前端tweb大会,听取了腾讯视频Web高级工程师lucien(段隆贤) 分享了针对SSR场景下的一些优化,由于笔者之
腾讯技术工程官方号
2019/11/25
2.1K0
基于Vue-SSR优化方案归纳总结
什么样的vue面试题答案才是面试官满意的
使用mapGetters辅助函数, 利用对象展开运算符将getter混入computed 对象中
bb_xiaxia1998
2022/11/09
2.2K0
2023前端常考vue面试题集锦_2023-02-23
Vue.js 是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。主要分为以下几个步骤:
用户10358241
2023/02/23
1.1K0
啥是 XXR ?认识前端项目渲染模式们
前端研发中有许多常见场景,根据不同的构建、渲染过程有不同的优劣势和适用情况。如现代 UI 库加持下常用的 CSR、具有更好 SEO 效果的 SSR (SPR)、转换思路主打构建时生成的 SSG、大架构视野之上的 ISR、DPR,还有更少听到的 NSR、ESR 等等。
Tecvan
2021/12/09
1.9K0
啥是 XXR ?认识前端项目渲染模式们
我的React服务端渲染实践
最近这段时间因为工作需要,实践了一下服务端渲染(Server Side Render,以下简称 SSR)技术,在这个过程中遇到了很多问题,也参考了很多开源框架的解决方案,感觉受益匪浅,于是有了这篇文章,目的是从零开始,教会大家如何搭建一个属于自己的基于 React的 SSR 框架,彻底弄明白SSR的原理。
astonishqft
2022/05/10
2.2K0
我的React服务端渲染实践
推荐阅读
相关推荐
关于骨架屏与首屏渲染
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验