Skip to main content

py-qunjielong-toolkit

群接龙开放平台 Python SDK,提供便捷的 API 调用方式,支持同步和异步模式,内置令牌缓存机制。

官方文档

群接龙开放平台 API 文档:https://open-api-doc.qunjielong.com/8481217m0

安装

pip install py-qunjielong-toolkit
uv add py-qunjielong-toolkit

依赖包

依赖包 版本 说明
httpx ^0.27.0 HTTP 客户端,支持同步和异步
py-httpx-toolkit ^1.0.0 HTTP 工具包
pydantic ^2.0.0 数据模型验证
jsonpath-ng ^1.5.3 JSONPath 表达式解析
jsonschema ^4.20.0 JSON Schema 验证
diskcache ^5.6.0 本地磁盘缓存(可选)
redis ^5.0.0 Redis 缓存(可选)

快速开始

基本使用

from py_qunjielong_toolkit.open import Open

# 初始化客户端
client = Open(secret="your_secret_key")

# 刷新访问令牌
client.refresh_access_token()

# 调用 API
response = client.ghome_getGhomeInfo()
print(response.json())

异步使用

import asyncio
from py_qunjielong_toolkit.open import Open

async def main():
    client = Open(secret="your_secret_key")
    await client.async_refresh_access_token()
    response = await client.async_ghome_getGhomeInfo()
    print(response.json())

asyncio.run(main())

使用缓存

import diskcache
from py_qunjielong_toolkit.open import Open

# 使用 diskcache
cache = diskcache.Cache("./cache")
client = Open(
    secret="your_secret_key",
    cache_config={
        "instance": cache,
        "expire": 7100  # 缓存过期时间(秒)
    }
)

# 或使用 Redis
import redis
redis_client = redis.Redis(host="localhost", port=6379, db=0)
client = Open(
    secret="your_secret_key",
    cache_config={
        "instance": redis_client,
        "expire": 7100
    }
)

API 说明

Open 类

初始化参数

参数 类型 默认值 说明
base_url Optional[str] "https://openapi.qunjielong.com" API 基础地址
secret Optional[str] None 企业密钥
cache_config Optional[dict] None 缓存配置
client_kwargs Optional[dict] None HTTP 客户端配置

主要方法

方法 说明
auth_token() 获取访问令牌(同步)
ghome_getGhomeInfo() 获取企业/组织信息(同步)
refresh_access_token() 刷新访问令牌(同步)
request_with_access_token() 带令牌的通用请求(同步)
async_auth_token() 获取访问令牌(异步)
async_ghome_getGhomeInfo() 获取企业/组织信息(异步)
async_refresh_access_token() 刷新访问令牌(异步)
async_request_with_access_token() 带令牌的通用请求(异步)

auth_token

获取访问令牌接口(同步),调用 /open/auth/token 接口获取 access_token。

response = client.auth_token()
print(response.json())

ghome_getGhomeInfo

获取企业/组织信息接口(同步),调用 /open/api/ghome/getGhomeInfo 接口。

response = client.ghome_getGhomeInfo()
print(response.json())

refresh_access_token

刷新访问令牌(同步),支持缓存机制。

client.refresh_access_token()

request_with_access_token

带令牌的通用请求方法(同步),自动将 access_token 添加到请求参数中。

response = client.request_with_access_token(
    method="GET",
    url="/open/api/custom/endpoint",
    params={"param1": "value1"}
)
print(response.json())

async_auth_token

获取访问令牌接口(异步版本)。

response = await client.async_auth_token()
print(response.json())

async_ghome_getGhomeInfo

获取企业/组织信息接口(异步版本)。

response = await client.async_ghome_getGhomeInfo()
print(response.json())

async_refresh_access_token

刷新访问令牌(异步版本)。

await client.async_refresh_access_token()

async_request_with_access_token

带令牌的通用请求方法(异步版本)。

response = await client.async_request_with_access_token(
    method="POST",
    url="/open/api/custom/endpoint",
    json={"key": "value"}
)
print(response.json())

Utils 工具函数

json_find_first

使用 JSONPath 表达式从数据中查找第一个匹配项。

from py_qunjielong_toolkit.open.utils import json_find_first

data = {"result": {"items": [1, 2, 3]}}
value = json_find_first("$.result.items[0]", data)
print(value)  # 输出: 1

json_is_valid

校验 JSON 数据是否符合指定的 JSON Schema。

from py_qunjielong_toolkit.open.utils import json_is_valid

schema = {"type": "object", "properties": {"name": {"type": "string"}}}
data = {"name": "test"}
print(json_is_valid(schema, data))  # 输出: True

success_is_valid

校验 API 响应是否成功(code 是否为 200)。

from py_qunjielong_toolkit.open.utils import success_is_valid

print(success_is_valid({"code": 200}))    # 输出: True
print(success_is_valid({"code": "200"}))  # 输出: True
print(success_is_valid({"code": "400"}))  # 输出: False

build_success_instance

将 HTTP 响应或字典转换为 Success 响应模型。

from py_qunjielong_toolkit.open.utils import build_success_instance

result = build_success_instance({"code": 200, "message": "ok", "data": "xxx"})
print(result.code)  # 输出: 200

响应模型

Base

基础响应模型:

  • code: 错误码(整数或字符串)
  • message: 错误信息(可选)

Success

成功响应模型:

  • code: 固定为 200

缓存机制

支持两种缓存方式:

diskcache(本地缓存)

import diskcache

cache = diskcache.Cache("./cache")
client = Open(
    secret="your_secret_key",
    cache_config={
        "instance": cache,
        "key": "custom_cache_key",
        "expire": 7100
    }
)

Redis(分布式缓存)

import redis

redis_client = redis.Redis(host="localhost", port=6379, db=0)
client = Open(
    secret="your_secret_key",
    cache_config={
        "instance": redis_client,
        "key": "custom_cache_key",
        "expire": 7100
    }
)

示例代码

完整示例

from py_qunjielong_toolkit.open import Open
from py_qunjielong_toolkit.open.utils import success_is_valid

# 初始化客户端
client = Open(
    secret="your_secret_key",
    client_kwargs={
        "timeout": 30,
        "verify": True
    }
)

try:
    # 刷新令牌
    client.refresh_access_token()
    
    # 调用接口
    response = client.ghome_getGhomeInfo()
    
    # 校验响应
    if success_is_valid(response):
        data = response.json()
        print("企业信息:", data)
    else:
        print("请求失败:", response.json())
        
except Exception as e:
    print(f"发生错误: {e}")

异步完整示例

import asyncio
from py_qunjielong_toolkit.open import Open
from py_qunjielong_toolkit.open.utils import success_is_valid

async def main():
    client = Open(secret="your_secret_key")
    
    try:
        await client.async_refresh_access_token()
        response = await client.async_ghome_getGhomeInfo()
        
        if success_is_valid(response):
            data = response.json()
            print("企业信息:", data)
        else:
            print("请求失败:", response.json())
            
    except Exception as e:
        print(f"发生错误: {e}")

asyncio.run(main())

项目主页

https://gitee.com/guolei19850528/py_qunjielong_toolkit

作者

许可证

MIT License

Metadata

Release files for py-qunjielong-toolkit 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for py-qunjielong-toolkit 1.0.0
File Size Uploaded Provenance
py_qunjielong_toolkit-1.0.0.tar.gz 11.4 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for py-qunjielong-toolkit 1.0.0
File Interpreter ABI Platform
py_qunjielong_toolkit-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 21.3 kB

Release files / py_qunjielong_toolkit-1.0.0.tar.gz

Download URL py_qunjielong_toolkit-1.0.0.tar.gz
Size 11.4 kB
Tags Source
SHA-256 checksum
How to use checksums
ac5fd2e45d7f241339a9015cdca727709afea08b0098aa2ea056d54d691ef83b
BLAKE2b-256 checksum
How to use checksums
87843e0cae29852ebde0262d353ff2b15cc125eeb605a0a664c75854bc418aa8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.6.11

Release files / py_qunjielong_toolkit-1.0.0-py3-none-any.whl

Download URL py_qunjielong_toolkit-1.0.0-py3-none-any.whl
Size 9.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
3552c033ebab2b57cabcdecda53b8e2466164e27c415d9d5bf9e71a3e9d59430
BLAKE2b-256 checksum
How to use checksums
d2001441768d3a739c60861936a5de3d4418a5fd25da764baa213d3f2bf1a3c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.6.11

Security for py-qunjielong-toolkit 1.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page