98 lines
3.0 KiB
Python
98 lines
3.0 KiB
Python
import argparse
|
||
import os
|
||
import sys
|
||
from dotenv import load_dotenv
|
||
from functools import lru_cache
|
||
from pydantic import computed_field
|
||
from pydantic_settings import BaseSettings
|
||
from typing import Literal
|
||
|
||
|
||
|
||
|
||
|
||
class HaiKangSettings:
|
||
"""
|
||
海康平台配置
|
||
"""
|
||
HAIKANG_URL = 'https://192.168.89.230'
|
||
HAIKANG_PORT = 443
|
||
|
||
HAIKANG_AK = '29862915'
|
||
HAIKANG_SK = '3QlsmcyadBqu4OpVoxsJ'
|
||
HAIKANG_ACCESS_TOKEN_URL = '/api/v1/oauth/token'
|
||
# HAIKANG_DOOR_STATES_URL = '/api/v1/door/states'
|
||
HAIKANG_DOOR_STATES_URL = '/api/acs/v1/door/states'
|
||
HAIKANG_DOOR_DOCONTROL_URL = '/api/acs/v1/door/doControl'
|
||
HAIKANG_DOOR_ENVENTS_URL = '/api/acs/v2/door/events'
|
||
HAIKANG_DOOR_SEARCH = '/api/resource/v2/door/search'
|
||
HAIKANG_DOOR_ONLINE_STATUS = '/api/nms/v1/online/acs_device/get'
|
||
HAIKANG_APPLICATION_ONETOMANY_URL = '/api/frs/v1/application/oneToMany'
|
||
HAIKANG_PICTURE_CHECK_URL = '/api/frs/v1/face/picture/check'
|
||
HAIKANG_FACECAPATURE_SEARCH = '/api/frs/v1/event/face_capture/search'
|
||
HAIKANG_FACE_GROUP_URL = '/api/frs/v1/face/group'
|
||
|
||
HAIKANG_VISITOR_RECORD_SEARCH = '/api/visitor/v2/appointment/records'
|
||
HAIKANG_VISITOR_RECORD_PICTURES = '/api/visitor/v1/record/pictures'
|
||
|
||
HAIKANG_PERSON_LIST = '/api/resource/v2/person/personList'
|
||
HAIKANG_GET_PERSON_PICTURE = '/api/resource/v1/person/picture'
|
||
|
||
HAIKANG_FACE_GROUP_ADDITION = '/api/frs/v1/face/group/single/addition'
|
||
|
||
HAIKANG_FACE_SIGLE_ADDITION = '/api/frs/v1/face/single/addition'
|
||
HAIKANG_FACE_DELETE = '/api/frs/v1/face/deletion'
|
||
|
||
HAIKANG_FACE_SAVE_PATH = "./face_images"
|
||
|
||
|
||
class GetConfig:
|
||
"""
|
||
获取配置
|
||
"""
|
||
|
||
def __init__(self):
|
||
self.parse_cli_args()
|
||
|
||
#
|
||
@lru_cache()
|
||
def get_haikang_config(self):
|
||
"""
|
||
获取海康平台配置
|
||
"""
|
||
return HaiKangSettings()
|
||
|
||
|
||
@staticmethod
|
||
def parse_cli_args():
|
||
"""
|
||
解析命令行参数
|
||
"""
|
||
if 'uvicorn' in sys.argv[0]:
|
||
# 使用uvicorn启动时,命令行参数需要按照uvicorn的文档进行配置,无法自定义参数
|
||
pass
|
||
else:
|
||
# 使用argparse定义命令行参数
|
||
parser = argparse.ArgumentParser(description='命令行参数')
|
||
parser.add_argument('--env', type=str, default='dev', help='运行环境')
|
||
# 解析命令行参数
|
||
args = parser.parse_args()
|
||
# 设置环境变量,如果未设置命令行参数,默认APP_ENV为dev
|
||
os.environ['APP_ENV'] = args.env if args.env else 'dev'
|
||
# 读取运行环境
|
||
run_env = os.environ.get('APP_ENV', '')
|
||
# 运行环境未指定时默认加载.env.dev
|
||
env_file = '.env.dev'
|
||
# 运行环境不为空时按命令行参数加载对应.env文件
|
||
if run_env != '':
|
||
env_file = f'.env.{run_env}'
|
||
# 加载配置
|
||
load_dotenv(env_file)
|
||
|
||
|
||
# 实例化获取配置类
|
||
get_config = GetConfig()
|
||
# 海康平台配置
|
||
HaiKangConfig = get_config.get_haikang_config()
|
||
|