一个用于与海康威视 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
from py_hikvision.isc.utils import convert_to_code_eq_0
# 初始化客户端
isc_inst = Isc(
host="https://your-isc-server.com",
ak="your-access-key",
sk="your-secret-key"
)
# 发送同步请求
response = isc_inst.request(
method="POST",
url="/api/parking/info",
json={"plateNo": "京A12345"}
)
print(convert_to_code_eq_0(response))
# 发送异步请求
async def fetch_data():
response = await isc_inst.async_request(
method="GET",
url="/api/parking/list"
)
return convert_to_code_eq_0(response)
使用自定义客户端
import httpx
from py_hikvision.isc import Isc
from py_hikvision.isc.utils import convert_to_code_eq_0
# 创建自定义客户端
custom_client = httpx.Client(
base_url="https://your-isc-server.com",
timeout=120,
verify=False
)
isc_inst = Isc(
host="https://your-isc-server.com",
ak="your-access-key",
sk="your-secret-key"
)
# 使用自定义客户端发送请求
response = isc_inst.request(
method="GET",
url="/api/parking/list"
)
print(convert_to_code_eq_0(response))
print(response.json())
工具函数示例
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_inst = Isc(
host="https://your-isc-server.com",
ak="your-access-key",
sk="your-secret-key"
)
response = isc_inst.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_inst = 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!
作者
Guolei174000902@qq.com
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.2.1.tar.gz
(11.6 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.2.1.tar.gz.
File metadata
- Download URL: py_hikvision-0.2.1.tar.gz
- Upload date:
- Size: 11.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.6.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
717e60d201d782e6b41a302d1245b18aacbb89281a05a09439b9645acd012e06
|
|
| MD5 |
0818604784ea9c9f3739a8478121b0c2
|
|
| BLAKE2b-256 |
c80cae61b6bcd70c36c5568cc143198612b9d9f0da187fb81357761a3cb8f8d3
|
File details
Details for the file py_hikvision-0.2.1-py3-none-any.whl.
File metadata
- Download URL: py_hikvision-0.2.1-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 |
4442c2a74acd8f76717c230abf2ecbdd3e01f801766f0834fff2bad7ed04d8ab
|
|
| MD5 |
b02eca1806a64ac2391d3e8c1b5380f4
|
|
| BLAKE2b-256 |
a4dfbdd75d7be56138d90eeea770a7f8ce7dc70a7ed61a4ff90fc2cca2172a7e
|