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+'×tamp='+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