53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
# coding: utf-8
|
||
|
||
from __future__ import absolute_import, division, print_function, unicode_literals
|
||
|
||
from io import BytesIO
|
||
from typing import TYPE_CHECKING, Tuple, Union
|
||
|
||
from utils.feishu.helper import to_file_like
|
||
|
||
if TYPE_CHECKING:
|
||
from utils.feishu.api import OpenLark
|
||
|
||
|
||
class APIImageMixin(object):
|
||
def upload_image(self, image):
|
||
"""上传图片
|
||
|
||
:type self: OpenLark
|
||
:param image: 图片文件,支持路径、bytes、BytesIO
|
||
:type image: Union[str, bytes, BytesIO]
|
||
:return: image_key, url
|
||
:rtype: Tuple[str, str]
|
||
|
||
上传图片,获取图片的 image_key。
|
||
|
||
https://open.feishu.cn/document/ukTMukTMukTM/uEDO04SM4QjLxgDN
|
||
"""
|
||
content = to_file_like(image)
|
||
|
||
url = self._gen_request_url('/open-apis/image/v4/upload/')
|
||
files = {'image': content}
|
||
res = self._post(url, files=files, with_tenant_token=True)
|
||
data = res['data']
|
||
image_key = data['image_key'] # type: str
|
||
url = data['url'] # type: str
|
||
return image_key, url
|
||
|
||
def get_image(self, image_key):
|
||
"""获取图片
|
||
|
||
:type self: OpenLark
|
||
:param image_key: 图片的key
|
||
:type image_key: str
|
||
:return: 图片 bytes
|
||
:rtype: bytes
|
||
|
||
根据图片的image_key拉取图片内容,仅可以拉到自己上传或者收到推送的图片
|
||
|
||
https://open.feishu.cn/document/ukTMukTMukTM/uYzN5QjL2cTO04iN3kDN
|
||
"""
|
||
url = self._gen_request_url('/open-apis/image/v4/get?image_key=' + image_key)
|
||
return self._get(url=url, raw_content=True, with_tenant_token=True)
|