实现拉取访客图片,并上传compreface功能
This commit is contained in:
parent
2bd20f5464
commit
19ba2446b8
@ -102,6 +102,10 @@ HAIKANG_FACE_DELETE = '/api/frs/v1/face/deletion'
|
||||
|
||||
HAIKANG_FACE_SAVE_PATH = "./face_images"
|
||||
|
||||
HAIKANG_VISITOR_PICTURES_SAVE_PATH = "./visitor/face_images/"
|
||||
HAIKANG_VISITOR_RECORD_TXT = "./visitor/visitorIds.txt"
|
||||
#---------------------------------海康平台配置end----------------------------------
|
||||
|
||||
|
||||
# # 人脸分组1vN检索
|
||||
# HAIKANG_APPLICATION_ONETOMANY_URL = '/api/frs/v1/application/oneToMany'
|
||||
|
||||
@ -14,7 +14,7 @@ def face_recognition_file(image_path, url):
|
||||
return response.json()
|
||||
|
||||
if __name__ == '__main__':
|
||||
image_path = './haotian.jpg'
|
||||
image_path = './moshengren.jpg'
|
||||
url = 'http://10.0.0.202:9099/system/compreface/face_recognition'
|
||||
# print(face_recognition_stream(image_path, url))
|
||||
print(face_recognition_file(image_path, url))
|
||||
@ -192,6 +192,8 @@ class HaiKangSettings:
|
||||
HAIKANG_FACE_DELETE = '/api/frs/v1/face/deletion'
|
||||
|
||||
HAIKANG_FACE_SAVE_PATH = "./face_images"
|
||||
HAIKANG_VISITOR_PICTURES_SAVE_PATH = "./visitor/face_images/"
|
||||
HAIKANG_VISITOR_RECORD_TXT = "./visitor/visitorIds.txt"
|
||||
|
||||
|
||||
|
||||
|
||||
@ -32,10 +32,10 @@ async def face_recognition(request: Request, file: UploadFile = File(None)) -> d
|
||||
return ResponseUtil.success(data=result)
|
||||
|
||||
|
||||
def my_job():
|
||||
print("任务执行时间:", datetime.datetime.now())
|
||||
# def my_job():
|
||||
# print("任务执行时间:", datetime.datetime.now())
|
||||
|
||||
from config.get_scheduler import scheduler
|
||||
from apscheduler.triggers.cron import CronTrigger
|
||||
trigger = CronTrigger(minute='*', second=0)
|
||||
scheduler.add_job(my_job, trigger=trigger)
|
||||
# from config.get_scheduler import scheduler
|
||||
# from apscheduler.triggers.cron import CronTrigger
|
||||
# trigger = CronTrigger(minute='*', second=0)
|
||||
# scheduler.add_job(my_job, trigger=trigger)
|
||||
@ -1,8 +1,10 @@
|
||||
from utils.haikang_util import HaikangUtil
|
||||
from module_admin.entity.vo.haikang_vo import VisitorReservationQueryModel
|
||||
from config.env import HaiKangConfig
|
||||
import json
|
||||
import base64
|
||||
import asyncio
|
||||
import os
|
||||
|
||||
class HaiKangService:
|
||||
"""
|
||||
@ -136,26 +138,36 @@ class HaiKangService:
|
||||
visitor_list += result[1]['list']
|
||||
else:
|
||||
break
|
||||
# else:
|
||||
# return []
|
||||
#
|
||||
# print(visitor_list)
|
||||
|
||||
os.makedirs(os.path.dirname(HaiKangConfig.HAIKANG_VISITOR_PICTURES_SAVE_PATH), exist_ok=True)
|
||||
|
||||
with open("./visitor/visitorIds.txt", "r", encoding="utf-8") as f:
|
||||
with open(HaiKangConfig.HAIKANG_VISITOR_RECORD_TXT, "r", encoding="utf-8") as f:
|
||||
visitor_ids = [line.rstrip('\n') for line in f]
|
||||
# print(visitor_ids)
|
||||
|
||||
|
||||
visitor_save_path_name_list = list()
|
||||
visitor_ids_add = list()
|
||||
for visitor in visitor_list:
|
||||
if visitor["visitorId"] not in visitor_ids:
|
||||
visitor_ids_add.append(visitor["visitorId"])
|
||||
# 获取图片
|
||||
try:
|
||||
await HaikangUtil.query_visitor_record_pictures(visitor["svrIndexCode"], visitor["picUri"], f"./visitor/face_images/{visitor['visitorName']}")
|
||||
result = await HaikangUtil.query_visitor_record_pictures(visitor["svrIndexCode"], visitor["picUri"], f"{HaiKangConfig.HAIKANG_VISITOR_PICTURES_SAVE_PATH}{visitor['visitorName']}")
|
||||
await asyncio.sleep(1)
|
||||
visitor_save_path_name_list.append(result)
|
||||
except Exception as e:
|
||||
print(e, visitor["visitorId"])
|
||||
|
||||
with open("./visitor/visitorIds.txt", "a", encoding="utf-8") as f:
|
||||
for visitor_id in visitor_ids_add:
|
||||
f.write(visitor_id + "\n")
|
||||
|
||||
return visitor_save_path_name_list
|
||||
|
||||
|
||||
|
||||
|
||||
@ -457,15 +457,15 @@ class HaikangUtil:
|
||||
back = await cls.send_request("POST", url, headers, body_json)
|
||||
|
||||
if back["code"] == "0":
|
||||
# logger.info(f"查询访客预约记录成功")
|
||||
logger.info(f"查询访客预约记录成功")
|
||||
return [True, back["data"]]
|
||||
else:
|
||||
# logger.error(f"查询访客预约记录失败 ", back["code"], back["msg"])
|
||||
logger.error(f"查询访客预约记录失败 ", back["code"], back["msg"])
|
||||
return [False, back["code"], back["msg"]]
|
||||
|
||||
# 获取访客记录中的图片
|
||||
@classmethod
|
||||
async def query_visitor_record_pictures(cls, svrIndexCode: str, picUri: str, save_path):
|
||||
async def query_visitor_record_pictures(cls, svrIndexCode: str, picUri: str, save_path:str):
|
||||
"""获取访客记录中的图片
|
||||
|
||||
Args:
|
||||
@ -490,12 +490,16 @@ class HaikangUtil:
|
||||
back = await cls.send_request("POST", url, headers, body_json, False)
|
||||
|
||||
os.makedirs(save_path, exist_ok=True)
|
||||
save_path = os.path.join(save_path, picUri.split('/')[-1]+".jpg")
|
||||
|
||||
name = save_path.split('/')[-1]
|
||||
save_path = os.path.join(save_path, name+".jpg")
|
||||
|
||||
with open(save_path, 'wb') as f:
|
||||
for chunk in back.iter_bytes(chunk_size=8192):
|
||||
if chunk: # 忽略 keep-alive 的空 chunk
|
||||
f.write(chunk)
|
||||
return [save_path, name]
|
||||
|
||||
|
||||
|
||||
|
||||
@ -1019,34 +1023,34 @@ class HaikangUtil:
|
||||
return [False, back["code"], back["msg"]]
|
||||
|
||||
# 查询访客预约记录, visitorStatus: 0 待审核, 1 正常, 2 迟到, 3 失效, 4 审核退回, 9 审核失效, 10 邀约中, 11 邀约失效
|
||||
@classmethod
|
||||
async def query_visitor_record(
|
||||
cls, **args
|
||||
):
|
||||
"""查询访客预约记录
|
||||
# @classmethod
|
||||
# async def query_visitor_record(
|
||||
# cls, **args
|
||||
# ):
|
||||
# """查询访客预约记录
|
||||
|
||||
Args:
|
||||
pageNo (int, optional): 页码. Defaults to 1.
|
||||
pageSize (int, optional): 每页个数. Defaults to 10.
|
||||
visitorStatus (int, optional): 访客状态. Defaults to 1.
|
||||
# Args:
|
||||
# pageNo (int, optional): 页码. Defaults to 1.
|
||||
# pageSize (int, optional): 每页个数. Defaults to 10.
|
||||
# visitorStatus (int, optional): 访客状态. Defaults to 1.
|
||||
|
||||
Returns:
|
||||
_type_: _description_
|
||||
"""
|
||||
url = f"{HaiKangConfig.HAIKANG_URL}:{HaiKangConfig.HAIKANG_PORT}/artemis{HaiKangConfig.HAIKANG_VISITOR_RECORD_SEARCH}"
|
||||
body_dict = args
|
||||
# Returns:
|
||||
# _type_: _description_
|
||||
# """
|
||||
# url = f"{HaiKangConfig.HAIKANG_URL}:{HaiKangConfig.HAIKANG_PORT}/artemis{HaiKangConfig.HAIKANG_VISITOR_RECORD_SEARCH}"
|
||||
# body_dict = args
|
||||
|
||||
body_json = json.dumps(body_dict, separators=(",", ":"))
|
||||
# body_json = json.dumps(body_dict, separators=(",", ":"))
|
||||
|
||||
headers = cls.build_signed_headers(
|
||||
"POST", url, body_json, HaiKangConfig.HAIKANG_AK, HaiKangConfig.HAIKANG_SK
|
||||
)
|
||||
# headers = cls.build_signed_headers(
|
||||
# "POST", url, body_json, HaiKangConfig.HAIKANG_AK, HaiKangConfig.HAIKANG_SK
|
||||
# )
|
||||
|
||||
back = await cls.send_request("POST", url, headers, body_json)
|
||||
# back = await cls.send_request("POST", url, headers, body_json)
|
||||
|
||||
if back["code"] == "0":
|
||||
logger.info(f"查询访客预约记录成功")
|
||||
return [True, back["data"]]
|
||||
else:
|
||||
logger.error(f"查询访客预约记录失败 ", back["code"], back["msg"])
|
||||
return [False, back["code"], back["msg"]]
|
||||
# if back["code"] == "0":
|
||||
# logger.info(f"查询访客预约记录成功")
|
||||
# return [True, back["data"]]
|
||||
# else:
|
||||
# logger.error(f"查询访客预约记录失败 ", back["code"], back["msg"])
|
||||
# return [False, back["code"], back["msg"]]
|
||||
|
||||
Loading…
Reference in New Issue
Block a user