85 lines
2.3 KiB
Python
85 lines
2.3 KiB
Python
import os
|
|
import json
|
|
from itertools import chain
|
|
|
|
import lark_oapi as lark
|
|
|
|
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 *
|
|
|
|
|
|
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()
|
|
)
|
|
|
|
# 发起请求
|
|
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
|
|
|
|
|
|
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
|