update
This commit is contained in:
BIN
hik_push/__pycache__/custom_exception.cpython-312.pyc
Normal file
BIN
hik_push/__pycache__/custom_exception.cpython-312.pyc
Normal file
Binary file not shown.
2
hik_push/custom_exception.py
Normal file
2
hik_push/custom_exception.py
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
class FeishuAuthException(Exception):
|
||||||
|
pass
|
@ -4,22 +4,37 @@ from io import BytesIO
|
|||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
|
from custom_exception import FeishuAuthException
|
||||||
from event_map_mapping import mapping
|
from event_map_mapping import mapping
|
||||||
|
|
||||||
from redis import asyncio as aioredis
|
from redis import asyncio as aioredis
|
||||||
|
|
||||||
headers = {"Authorization": "Bearer t-g1041oeFF3LTS5MA3HQYUHYFOK246EAEPFJWPRWP"}
|
app_id = "cli_a525f3d78e3e500c"
|
||||||
|
app_secret = "JVhnbKfXifddjHVwcTqbEfn1rDQBYqDD"
|
||||||
|
|
||||||
|
headers = {"Authorization": ""}
|
||||||
|
|
||||||
|
|
||||||
|
def get_access_token(api_id, secret):
|
||||||
|
url = "https://open.feishu.cn/open-apis/auth/v3/tenant_access_token/internal"
|
||||||
|
data = {
|
||||||
|
"app_id": api_id,
|
||||||
|
"app_secret": secret
|
||||||
|
}
|
||||||
|
resp = requests.post(url, data=data).content.decode('utf-8')
|
||||||
|
return json.loads(resp)['tenant_access_token']
|
||||||
|
|
||||||
|
|
||||||
# 获取事件的图片
|
# 获取事件的图片
|
||||||
def get_image_url(event):
|
def get_image_url(event):
|
||||||
analysis_key = mapping.get(event['eventType'])['analyze_key']
|
analysis_key = mapping.get(event['eventType'])['analyze_key']
|
||||||
print(analysis_key)
|
|
||||||
if analysis_key is None:
|
if analysis_key is None:
|
||||||
return []
|
return None
|
||||||
images = []
|
images = []
|
||||||
for el in event['data'][analysis_key]:
|
for el in event['data'][analysis_key]:
|
||||||
images.append(el['imageUrl'])
|
images.append(el['imageUrl'])
|
||||||
|
if len(images) == 0:
|
||||||
|
return None
|
||||||
return images
|
return images
|
||||||
|
|
||||||
|
|
||||||
@ -39,6 +54,10 @@ def upload_image(url):
|
|||||||
]
|
]
|
||||||
image = requests.request("POST", "https://open.feishu.cn/open-apis/im/v1/images", data=payload,
|
image = requests.request("POST", "https://open.feishu.cn/open-apis/im/v1/images", data=payload,
|
||||||
files=files, headers=headers).content.decode('utf-8')
|
files=files, headers=headers).content.decode('utf-8')
|
||||||
|
data = json.loads(image)
|
||||||
|
code = data['code']
|
||||||
|
if code == 99991663:
|
||||||
|
raise FeishuAuthException
|
||||||
image_key = json.loads(image)['data']['image_key']
|
image_key = json.loads(image)['data']['image_key']
|
||||||
return image_key
|
return image_key
|
||||||
|
|
||||||
@ -49,10 +68,16 @@ def push_to_feishu(data):
|
|||||||
# push_url = "http://192.168.20.115:8000/ipaasuat/engine_company/anycross/trigger/callback/MmRhZTE4OTRiYjVkZDQ5YWNmOGRmZDI0NjQ1MTBlODUw/1.0.0"
|
# push_url = "http://192.168.20.115:8000/ipaasuat/engine_company/anycross/trigger/callback/MmRhZTE4OTRiYjVkZDQ5YWNmOGRmZDI0NjQ1MTBlODUw/1.0.0"
|
||||||
data = json.dumps(data)
|
data = json.dumps(data)
|
||||||
r = requests.post(push_url, data=data, headers=headers).content.decode('utf-8')
|
r = requests.post(push_url, data=data, headers=headers).content.decode('utf-8')
|
||||||
|
data = json.loads(r)
|
||||||
|
code = data['code']
|
||||||
|
if code == 99991663:
|
||||||
|
raise FeishuAuthException
|
||||||
print(r)
|
print(r)
|
||||||
|
|
||||||
|
|
||||||
async def read_event():
|
async def read_event():
|
||||||
|
access_token = get_access_token(app_id, app_secret)
|
||||||
|
headers['Authorization'] = f"Bearer {access_token}"
|
||||||
redis_client = await aioredis.from_url("redis://localhost")
|
redis_client = await aioredis.from_url("redis://localhost")
|
||||||
while True:
|
while True:
|
||||||
data = await redis_client.brpop("event")
|
data = await redis_client.brpop("event")
|
||||||
@ -64,8 +89,10 @@ async def read_event():
|
|||||||
print(event_type)
|
print(event_type)
|
||||||
# TODO: 上传图片到飞书链接
|
# TODO: 上传图片到飞书链接
|
||||||
images = get_image_url(event)
|
images = get_image_url(event)
|
||||||
feishu_image_url = upload_image(images[0])
|
feishu_image_key = None
|
||||||
print(feishu_image_url)
|
if images is not None:
|
||||||
|
feishu_image_key = upload_image(images[0])
|
||||||
|
print(feishu_image_key)
|
||||||
|
|
||||||
# TODO: 根据ip_address获取对应userid
|
# TODO: 根据ip_address获取对应userid
|
||||||
#
|
#
|
||||||
@ -85,14 +112,15 @@ async def read_event():
|
|||||||
"elements": [
|
"elements": [
|
||||||
{
|
{
|
||||||
"tag": "markdown",
|
"tag": "markdown",
|
||||||
"content": "这里是卡片文本,支持使用markdown标签设置文本格式。例如:\n*斜体* 、**粗体**、~~删除线~~、[文字链接](https://www.feishu.cn)、<at id=all></at>、<font color='red'> 彩色文本 </font>"
|
"content": "这里是卡片文本,支持使用markdown标签设置文本格式。例如:\n*斜体* 、**粗体**、~~删除线~~、[文字链接]("
|
||||||
|
"https://www.feishu.cn)、<at id=all></at>、<font color='red'> 彩色文本 </font>"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"alt": {
|
"alt": {
|
||||||
"content": "",
|
"content": "",
|
||||||
"tag": "plain_text"
|
"tag": "plain_text"
|
||||||
},
|
},
|
||||||
"img_key": feishu_image_url,
|
"img_key": feishu_image_key,
|
||||||
"tag": "img",
|
"tag": "img",
|
||||||
"mode": "fit_horizontal",
|
"mode": "fit_horizontal",
|
||||||
"compact_width": False
|
"compact_width": False
|
||||||
@ -123,13 +151,17 @@ async def read_event():
|
|||||||
}
|
}
|
||||||
push_to_feishu(push_data)
|
push_to_feishu(push_data)
|
||||||
print(event_type["type"], ip_address)
|
print(event_type["type"], ip_address)
|
||||||
|
|
||||||
|
except FeishuAuthException:
|
||||||
|
print("飞书登录失败")
|
||||||
|
# TODO: 重新获取 access token
|
||||||
|
access_token = get_access_token(app_id, app_secret)
|
||||||
|
headers['Authorization'] = f"Bearer {access_token}"
|
||||||
|
await redis_client.lpush("event", json.dumps(event_json))
|
||||||
|
continue
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print("error: ", e)
|
print("error: ", e)
|
||||||
continue
|
continue
|
||||||
# except Exception as e:
|
|
||||||
# print("error", e)
|
|
||||||
# # await redis_client.lpush("event", json.dumps(event_json))
|
|
||||||
# continue
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
5
hik_push/user_map.py
Normal file
5
hik_push/user_map.py
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
user_map = {
|
||||||
|
"10.19.134.11": [
|
||||||
|
"8dg79c18"
|
||||||
|
]
|
||||||
|
}
|
Reference in New Issue
Block a user