add download message image
continuous-integration/drone/push Build is passing

This commit is contained in:
jianxin committed 2024-01-17 17:26:28 +08:00
1 parent 799099ff1c
commit af3ff10ead
2 files changed
+96 -24

No files matched your search

+76 -24
View File
@@ -1,32 +1,84 @@
import os
import json
from itertools import chain
import lark_oapi as lark
message_content = ""
images = []
data = [
[
{
"height": 756,
"image_key": "img_v3_0277_2c2fbab4-8b13-4a6a-a273-e0d1d47b4ecg",
"tag": "img",
"width": 529,
}
],
[
{"style": [], "tag": "text", "text": "11111111"},
{"style": [], "tag": "at", "user_id": "@_user_1", "user_name": "官方应用指令"},
{"style": [], "tag": "text", "text": ""},
],
]
from flask import Flask
from dotenv import load_dotenv
from lark_oapi.adapter.flask import *
from lark_oapi.api.im.v1 import *
from lark_oapi.api.bitable.v1 import *
import lark_oapi as lark
from lark_oapi.api.drive.v1 import *
for item in chain.from_iterable(data):
if item.get("tag") == "text":
message_content += item["text"]
def get_message_resource(client, message_id, file_key, file_type, save_dir):
request: GetMessageResourceRequest = (
GetMessageResourceRequest.builder()
.message_id(message_id)
.file_key(file_key)
.type(file_type)
.build()
)
if item.get("tag") == "img":
images.append(item["image_key"])
# 发起请求
response: GetMessageResourceResponse = client.im.v1.message_resource.get(request)
# 处理失败返回
if not response.success():
lark.logger.error(
f"client.im.v1.message_resource.get failed, code: {response.code}, msg: {response.msg}, log_id: {response.get_log_id()}"
)
return
# 处理业务结果
file_path = os.path.join(save_dir, response.file_name)
f = open(file_path, "wb")
f.write(response.file.read())
f.close()
return response.file_name
print(message_content)
print(images)
def upload_media(client, file_path, parent_type, parent_node):
# 构造请求对象
_, filename = os.path.split(file_path)
file_size = os.path.getsize(file_path)
file_bin = open(file_path)
request: UploadAllMediaRequest = (
UploadAllMediaRequest.builder()
.request_body(
UploadAllMediaRequestBody.builder()
.file_name(filename)
.parent_type(parent_type)
.parent_node(parent_node)
.size(file_size)
.file(file_bin)
.build()
)
.build()
)
file_bin.close()
# 发起请求
option = (
lark.RequestOption.builder()
.user_access_token("u-dF0r5rD5BcUFhORI38zmlk1l61TBghPzry00gl.82Haz")
.build()
)
response: UploadAllMediaResponse = client.drive.v1.media.upload_all(request, option)
# 处理失败返回
if not response.success():
lark.logger.error(
f"client.drive.v1.media.upload_all failed, code: {response.code}, msg: {response.msg}, log_id: {response.get_log_id()}"
)
return
# 处理业务结果
lark.logger.info(lark.JSON.marshal(response.data, indent=4))
return response.data.file_token