赞
踩
最近使用飞书聊天,觉得蛮好用的,刚好这段时间在备考,就想着每天推送一些励志语录 和风景图片什么的,提一下动力
飞书群机器人会有对应的webhook,顾名思义就是网络钩子,通过对钩子发送网络请求,即可将消息推送至群内,本文使用的python完成
#获取有效token以便进行图片上传
def getttoken():
#在飞书中使用图片需要先将图片上传到飞书中,随后得到Image_Key便可发送图片
def uploadImage():
#因为我想每天都发送新的图片,所以每次都许愿去网络上获取新的照片
def getpic():
main()
在网上找到了一个图片API,更新序号即可获得不通过的图片,我以日期作为参考,每天获取一张新的照片,代码如下
def getpic(): current_time = time.strftime('%Y-%m-%d', time.localtime(time.time())) start_date = '2022-2-17' end_date = current_time start_sec = time.mktime(time.strptime(start_date, '%Y-%m-%d')) end_sec = time.mktime(time.strptime(end_date, '%Y-%m-%d')) distance_days = int((end_sec - start_sec)/(24*60*60)) days = 121+distance_days days = str(days) url = "https://cdn.jsdelivr.net/gh/flipped-1121/APIPIC@master/scenery/"+days+".jpg" name = "1.jpg" # 保存文件时候注意类型要匹配,如要保存的图片为jpg,则打开的文件的名称必须是jpg格式,否则会产生无效图片 conn = urllib.request.urlopen(url) f = open(name, 'wb') f.write(conn.read()) f.close() print('Pic Saved!')
因为飞书中使用图片需要先将图片上传至飞书中,上传过程中需要获取tenant_access_token(企业自建应用)
图片功能需要机器人获得上传图片的权限,具体步骤点击这里
代码如下
def gettoken():
url='https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal?app_id=YOUR_ID&app_secret=YOUR_KEY'
res = requests.get(url=url)
token=res.json()
token_text=token['tenant_access_token']
return token_text
上传图片文档请参考飞书官方文档
代码如下
def uploadImage(token): url = "https://open.feishu.cn/open-apis/im/v1/images" form = {'image_type': 'message', 'image': (open('./1.jpg', 'rb'))} # 需要替换具体的path multi_form = MultipartEncoder(form) headers = { # 获取tenant_access_token, 需要替换为实际的token 'Authorization': 'Bearer '+token, } headers['Content-Type'] = multi_form.content_type response = requests.request("POST", url, headers=headers, data=multi_form) # print(response.headers['X-Tt-Logid']) # for debug or oncall res=bytes.decode(response.content) res=eval(res) print(res['data']['image_key']) # Print Response return res['data']['image_key']
上传至服务器定时调用.py文件即可
import time import requests import urllib.request from requests_toolbelt import MultipartEncoder # 获取当日token def gettoken(): url='https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal?app_id=YOUR_ID&app_secret=YOUR_KEY' res = requests.get(url=url) token=res.json() token_text=token['tenant_access_token'] return token_text # print(token_text) # 更新当日的风景照以及image_key def uploadImage(token): url = "https://open.feishu.cn/open-apis/im/v1/images" form = {'image_type': 'message', 'image': (open('./1.jpg', 'rb'))} # 需要替换具体的path multi_form = MultipartEncoder(form) headers = { # 获取tenant_access_token, 需要替换为实际的token 'Authorization': 'Bearer '+token, } headers['Content-Type'] = multi_form.content_type response = requests.request("POST", url, headers=headers, data=multi_form) # print(response.headers['X-Tt-Logid']) # for debug or oncall res=bytes.decode(response.content) res=eval(res) print(res['data']['image_key']) # Print Response return res['data']['image_key'] def getpic(): current_time = time.strftime('%Y-%m-%d', time.localtime(time.time())) start_date = '2022-2-17' end_date = current_time start_sec = time.mktime(time.strptime(start_date, '%Y-%m-%d')) end_sec = time.mktime(time.strptime(end_date, '%Y-%m-%d')) distance_days = int((end_sec - start_sec)/(24*60*60)) days = 121+distance_days days = str(days) url = "https://cdn.jsdelivr.net/gh/flipped-1121/APIPIC@master/scenery/"+days+".jpg" name = "1.jpg" # 保存文件时候注意类型要匹配,如要保存的图片为jpg,则打开的文件的名称必须是jpg格式,否则会产生无效图片 conn = urllib.request.urlopen(url) f = open(name, 'wb') f.write(conn.read()) f.close() print('Pic Saved!') if __name__ == '__main__': token=gettoken() getpic() image_key=uploadImage(token) # webhook url = "YOUR_WEBHOOK" # 每日语录 url_soup = 'https://apis.juhe.cn/fapig/soup/query?key=YOUR_KEY' res_soup = requests.get(url=url_soup) soup = res_soup.json() soup_text = soup['result']['text'] # 显示当前时间及距目标天数 current_time = time.strftime('%Y-%m-%d', time.localtime(time.time())) start_date = current_time end_date = '2022-12-25' start_sec = time.mktime(time.strptime(start_date, '%Y-%m-%d')) end_sec = time.mktime(time.strptime(end_date, '%Y-%m-%d')) distance_days = int((end_sec - start_sec)/(24*60*60)) distance_days = str(distance_days) data = { "msg_type": "interactive", "card": { "config": { # "wide_screen_mode": true }, "header": { "template": "orange", "title": { "content": " YOUR_CONTENT", "tag": "plain_text" } }, "i18n_elements": { "zh_cn": [ { "tag": "div", "text": { "content":"YOUR_CONTENT", "tag": "lark_md" } }, { "tag": "div", "text": { "content": "\""+soup_text+"\"", "tag": "lark_md" } }, { "alt": { "content": "", "tag": "plain_text" }, "img_key": image_key, "tag": "img" } ] } } } # 字符串格式 res = requests.post(url=url, json=data) print(res.text)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。