157 lines
4.6 KiB
Python
157 lines
4.6 KiB
Python
import io
|
|
|
|
from requests_toolbelt import MultipartEncoder
|
|
|
|
import lark_oapi as lark
|
|
|
|
|
|
# 通过手机号或邮箱获取用户 ID
|
|
def batch_get_id_user():
|
|
# 创建client
|
|
client = lark.Client.builder() \
|
|
.app_id(lark.APP_ID) \
|
|
.app_secret(lark.APP_SECRET) \
|
|
.log_level(lark.LogLevel.DEBUG) \
|
|
.build()
|
|
|
|
# 构造请求对象
|
|
request: lark.BaseRequest = lark.BaseRequest.builder() \
|
|
.http_method(lark.HttpMethod.POST) \
|
|
.uri("/open-apis/contact/v3/users/batch_get_id") \
|
|
.token_types({lark.AccessTokenType.TENANT}) \
|
|
.queries([("user_id_type", "open_id")]) \
|
|
.body({"emails": ["xxxx@bytedance.com"], "mobiles": ["15000000000"]}) \
|
|
.build()
|
|
|
|
# 发起请求
|
|
response: lark.BaseResponse = client.request(request)
|
|
|
|
# 处理失败返回
|
|
if not response.success():
|
|
lark.logger.error(
|
|
f"client.request failed, code: {response.code}, msg: {response.msg}, log_id: {response.get_log_id()}")
|
|
return
|
|
|
|
# 处理业务结果
|
|
lark.logger.info(str(response.raw.content, lark.UTF_8))
|
|
|
|
|
|
# 上传文件
|
|
def upload_all_file():
|
|
# 创建client
|
|
client = lark.Client.builder() \
|
|
.app_id(lark.APP_ID) \
|
|
.app_secret(lark.APP_SECRET) \
|
|
.log_level(lark.LogLevel.DEBUG) \
|
|
.build()
|
|
|
|
# 构造请求对象
|
|
file = open("/Users/bytedance/Desktop/demo.pdf", "rb")
|
|
data = {
|
|
"file_name": "demo.pdf",
|
|
"parent_type": "explorer",
|
|
"parent_node": "Y9LhfoWNZlKxWcdsf2fcPP0SnXc",
|
|
"size": 1199,
|
|
"file": file
|
|
}
|
|
body = MultipartEncoder(lark.Files.parse_form_data(data))
|
|
|
|
request: lark.BaseRequest = lark.BaseRequest.builder() \
|
|
.http_method(lark.HttpMethod.POST) \
|
|
.uri("/open-apis/drive/v1/files/upload_all") \
|
|
.headers({"Content-Type": body.content_type}) \
|
|
.token_types({lark.AccessTokenType.TENANT}) \
|
|
.body(body) \
|
|
.build()
|
|
|
|
# 发起请求
|
|
response: lark.BaseResponse = client.request(request)
|
|
|
|
# 处理失败返回
|
|
if not response.success():
|
|
lark.logger.error(
|
|
f"client.request failed, code: {response.code}, msg: {response.msg}, log_id: {response.get_log_id()}")
|
|
return
|
|
|
|
# 处理业务结果
|
|
lark.logger.info(str(response.raw.content, lark.UTF_8))
|
|
|
|
|
|
# 上传审批文件
|
|
def upload_approval_file():
|
|
# 创建client
|
|
client = lark.Client.builder() \
|
|
.app_id(lark.APP_ID) \
|
|
.app_secret(lark.APP_SECRET) \
|
|
.log_level(lark.LogLevel.DEBUG) \
|
|
.build()
|
|
|
|
# 构造请求对象
|
|
file = open("/Users/bytedance/Desktop/demo.pdf", "rb")
|
|
data = {
|
|
"name": "2305.14283.pdf",
|
|
"type": "attachment",
|
|
"content": ("2305.14283.pdf", file, "")
|
|
}
|
|
body = MultipartEncoder(lark.Files.parse_form_data(data))
|
|
|
|
request: lark.BaseRequest = (
|
|
lark.BaseRequest.builder()
|
|
.http_method(lark.HttpMethod.POST)
|
|
.uri("/approval/openapi/v2/file/upload")
|
|
.headers({"Content-Type": body.content_type})
|
|
.token_types({lark.AccessTokenType.TENANT})
|
|
.body(body)
|
|
.build()
|
|
)
|
|
|
|
# 发起请求
|
|
response: lark.BaseResponse = client.request(request)
|
|
|
|
# 处理失败返回
|
|
if not response.success():
|
|
lark.logger.error(
|
|
f"client.request failed, code: {response.code}, msg: {response.msg}, log_id: {response.get_log_id()}")
|
|
return
|
|
|
|
# 处理业务结果
|
|
lark.logger.info(str(response.raw.content, lark.UTF_8))
|
|
|
|
|
|
# 下载文件
|
|
def download_file():
|
|
# 创建client
|
|
client = lark.Client.builder() \
|
|
.app_id(lark.APP_ID) \
|
|
.app_secret(lark.APP_SECRET) \
|
|
.log_level(lark.LogLevel.DEBUG) \
|
|
.build()
|
|
|
|
# 构造请求对象
|
|
request: lark.BaseRequest = lark.BaseRequest.builder() \
|
|
.http_method(lark.HttpMethod.GET) \
|
|
.uri("/open-apis/drive/v1/files/:file_token/download") \
|
|
.paths({"file_token": "TYr6bxn1PoFZb0x63UocDQ5tnBf"}) \
|
|
.token_types({lark.AccessTokenType.TENANT}) \
|
|
.build()
|
|
|
|
# 发起请求
|
|
response: lark.BaseResponse = client.request(request)
|
|
|
|
# 处理失败返回
|
|
if not response.success():
|
|
lark.logger.error(
|
|
f"client.request failed, code: {response.code}, msg: {response.msg}, log_id: {response.get_log_id()}")
|
|
return
|
|
|
|
# 处理业务结果
|
|
file = io.BytesIO(response.raw.content)
|
|
file_name = lark.Files.parse_file_name(response.raw.headers)
|
|
f = open(f"/Users/bytedance/Desktop/{file_name}", "wb")
|
|
f.write(file.read())
|
|
f.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
pass
|