一个用于与海康威视 iSecure Center (ISC) API 交互的 Python 客户端库
Project description
py_hikvision
一个用于与海康威视 iSecure Center (ISC) API 交互的 Python 客户端库。
功能特性
- 🔐 API 认证: 支持 HMAC-SHA256 签名认证机制
- 🚀 同步/异步请求: 支持同步和异步两种 HTTP 请求方式
- 📋 响应模型: 使用 Pydantic 进行响应数据校验和解析
- 🔧 工具函数: 提供时间戳、UUID、JSONPath 查询等实用工具
安装
pip install py_hikvision
快速开始
基本使用
from py_hikvision.isc import Isc
# 初始化客户端
isc = Isc(
host="https://your-isc-server.com",
ak="your-access-key",
sk="your-secret-key"
)
# 发送同步请求
response = isc.request(
method="POST",
url="/api/parking/info",
json={"plateNo": "京A12345"}
)
print(response.json())
# 发送异步请求
async def fetch_data():
response = await isc.async_request(
method="GET",
url="/api/parking/list"
)
return response.json()
使用自定义客户端
import httpx
from py_hikvision.isc import Isc
# 创建自定义客户端
custom_client = httpx.Client(
base_url="https://your-isc-server.com",
timeout=120,
verify=False
)
isc = Isc(
ak="your-access-key",
sk="your-secret-key"
)
# 使用自定义客户端发送请求
response = isc.request(
client=custom_client,
method="GET",
url="/api/parking/list"
)
工具函数示例
from py_hikvision.isc.utils import (
timestamp,
nonce,
json_find_first,
url_add_artemis_prefix
)
# 生成时间戳(毫秒)
ts = timestamp()
print(f"当前时间戳: {ts}")
# 生成随机 UUID
random_nonce = nonce()
print(f"随机 UUID: {random_nonce}")
# JSONPath 查询
data = {
"code": 0,
"msg": "success",
"data": {
"list": [
{"id": 1, "name": "设备1"},
{"id": 2, "name": "设备2"}
]
}
}
first_name = json_find_first("$.data.list[0].name", data)
print(f"第一个设备名称: {first_name}")
# 添加 Artemis 前缀
url = "/api/parking/info"
prefixed_url = url_add_artemis_prefix(url)
print(f"带前缀的 URL: {prefixed_url}") # 输出: /artemis/api/parking/info
响应模型使用
from py_hikvision.isc import Isc
from py_hikvision.isc.responses import CODE_EQ_0
from py_hikvision.isc.utils import convert_to_code_eq_0
isc = Isc(
host="https://your-isc-server.com",
ak="your-access-key",
sk="your-secret-key"
)
response = isc.request(method="GET", url="/api/parking/list")
# 转换为 CODE_EQ_0 模型
code_eq_0_response = convert_to_code_eq_0(response)
# 访问响应数据
print(f"状态码: {code_eq_0_response.code}")
print(f"消息: {code_eq_0_response.msg}")
print(f"数据: {code_eq_0_response.data.data}")
API 文档
Isc 类
初始化
isc = Isc(
host: Optional[str] = None, # ISC 服务器地址
ak: Optional[str] = None, # Access Key
sk: Optional[str] = None, # Secret Key
client_kwargs: Optional[dict] = None # httpx 客户端配置
)
方法
| 方法 | 说明 |
|---|---|
client() |
创建同步 HTTP 客户端 |
async_client() |
创建异步 HTTP 客户端 |
signature(string) |
生成 HMAC-SHA256 签名 |
headers(method, path, headers) |
生成请求头(包含签名) |
request(**kwargs) |
发送同步请求 |
async_request(**kwargs) |
发送异步请求 |
工具函数
from py_hikvision.isc.utils import (
timestamp, # 生成毫秒时间戳
nonce, # 生成 UUID
json_find_first, # JSONPath 查询
json_is_valid, # JSON Schema 校验
url_add_artemis_prefix, # 添加 Artemis 前缀
image_to_base64_and_md5, # 图片编码
convert_to_code_eq_0 # 转换为 CODE_EQ_0 模型
)
响应模型
from py_hikvision.isc.responses import CODE_EQ_0
# 响应结构
code_eq_0 = CODE_EQ_0(
code=0, # 错误码,0 表示成功
msg="success", # 错误信息
data={...} # 响应数据
)
安全说明
- 签名机制: 使用 HMAC-SHA256 算法确保请求完整性
- 防止重放攻击: 通过 nonce(随机 UUID)和 timestamp(时间戳)实现
- 密钥管理: Access Key 和 Secret Key 应妥善保管,避免泄露
依赖
httpx: HTTP 客户端pydantic: 数据验证jsonpath-ng: JSONPath 查询jsonschema: JSON Schema 校验
主页
https://gitee.com/guolei19850528/py_hikvision
许可证
MIT License
贡献
欢迎提交 Issue 和 Pull Request!
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
py_hikvision-0.1.8.tar.gz
(11.4 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file py_hikvision-0.1.8.tar.gz.
File metadata
- Download URL: py_hikvision-0.1.8.tar.gz
- Upload date:
- Size: 11.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a1f95f132d6a1eff561d7fd04d1ed4a93f637d375ae317a3c49eaf82cea42974
|
|
| MD5 |
612761a458c70f02730d97c6451d1aeb
|
|
| BLAKE2b-256 |
8e26d88d4446d47ed8ed49bbc2bca414ba204375f2cbe533ae424a6d07d34a37
|
File details
Details for the file py_hikvision-0.1.8-py3-none-any.whl.
File metadata
- Download URL: py_hikvision-0.1.8-py3-none-any.whl
- Upload date:
- Size: 10.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2423dd354bd7619ebb8332587076812dbc80733353be95d94e1378478ad176f9
|
|
| MD5 |
1e01913ab80aaa7abb4be89d7639410e
|
|
| BLAKE2b-256 |
5d0f921e54bee6339fd4f7b2e09bcf5bc653dfa6c1bddbc1c9418759227f6179
|