Skip to main content

Python SDK for ZFile API - 功能完整的ZFile文件管理系统SDK

Project description

ZFile SDK

一个功能完整的 Python SDK,用于与 ZFile 文件管理系统进行交互。该 SDK 封装了前端用户和管理员的完整 API 接口,提供了基于 Pydantic 的类型安全请求/响应处理和统一的错误管理机制。

✨ 特性

  • 🔐 完整的认证系统 - 支持用户登录、管理员认证、验证码和会话管理
  • 📁 文件管理功能 - 文件列表查看、文件操作(上传、下载、重命名、移动、复制、删除)
  • 🔗 链接管理 - 批量生成直链和短链
  • 🌐 多平台集成 - 支持 Google Drive、OneDrive、SharePoint、S3、115网盘等存储源
  • ⚙️ 站点配置 - 获取站点全局设置、存储源配置等
  • 👨‍💼 管理员功能 - 完整的后台管理功能,包括用户管理、权限控制、存储源管理等
  • 📝 类型安全 - 基于 Pydantic 2.x 的强类型支持和数据验证
  • 🛡️ 错误处理 - 统一的异常处理和错误管理机制
  • 📊 日志记录 - 完整的操作日志和调试信息
  • 🔧 装饰器支持 - 自动参数解析和模型验证

📦 安装(两种安装方式选择一种即可,建议从PyPI安装)

从 PyPI 安装(推荐)

pip install zfile-pysdk

从源码安装

git clone https://github.com/cuckoo711/zfile_sdk.git
cd zfile_sdk
pip install -r requirements.txt
pip install -e .

依赖要求

  • Python 3.10+
  • requests ~= 2.32.4
  • pydantic ~= 2.11.7
  • urllib3 ~= 2.5.0

更新方式

从 PyPI 更新

pip install --upgrade zfile-pysdk

从源码更新

git pull origin main
pip install -r requirements.txt
pip install -e .

🚀 快速开始

基础用法

# 导入核心客户端
from ZfileSDK.utils import ApiClient

创建客户端实例

# 创建客户端实例
client = ApiClient(base_url="http://localhost:8080")

# 用户登录
client.login(username="your_username", password="your_password")

# 检查登录状态
print(f"是否为管理员: {client.is_admin}")
print(f"当前 Token: {client.token}")

# 使用完毕后注销
client.logout()

使用上下文管理器

# 使用上下文管理器自动处理登录和注销
with ApiClient(base_url="http://localhost:8080") as client:
    client.login(username="admin", password="password")
    # 执行各种操作...
    # 自动清理资源

文件操作示例

from ZfileSDK.front import FileListModule, FileOperationModule

# 获取文件列表
file_list_module = FileListModule(client)
files = file_list_module.storage_files(
    storage_key="local",
    path="/",
    password=None
)

# 创建文件夹
file_op_module = FileOperationModule(client)
result = file_op_module.mkdir(
    storage_key="local",
    path="/",
    name="新文件夹",
    password=None
)

管理员功能示例

from ZfileSDK.admin import UserManagement, StorageSourceModuleBasic

# 用户管理
user_mgmt = UserManagement(client)
users = user_mgmt.list_users(
    page=1,
    size=10,
    order_by="id",
    order_direction="desc"
)

# 存储源管理
storage_mgmt = StorageSourceModuleBasic(client)
storages = storage_mgmt.list_storage_sources()

短链生成示例

from ZfileSDK.front import DirectShortChainModule

# 生成短链
short_link_module = DirectShortChainModule(client)
links = short_link_module.batch_generate(
    storage_key="local",
    paths=["/file1.txt", "/file2.txt"],
    expire_time=3600,
)

📁 项目结构

zfile_sdk/
├── ZfileSDK/
│   ├── __init__.py                                     # 主模块初始化导入
│   ├── admin/                                          # 管理员功能模块
│   │   ├── __init__.py                                 # 后台管理员模块导入
│   │   ├── user_management.py                          # 用户管理
│   │   ├── login_module.py                             # 登录模块
│   │   ├── permission_module.py                        # 权限模块
│   │   ├── login_log_management.py                     # 登录日志管理
│   │   ├── single_sign_on_management.py                # 单点登录管理
│   │   ├── site_setting_module.py                      # 站点设置
│   │   ├── storage_source_module_basic.py              # 存储源基础管理
│   │   ├── storage_source_module_filter_file.py        # 存储源过滤文件
│   │   ├── storage_source_module_metadata.py           # 存储源元数据
│   │   ├── storage_source_module_permission.py         # 存储源权限
│   │   ├── storage_source_module_readme.py             # 存储源README
│   │   ├── rule_management_view_rules.py               # 显示规则管理
│   │   ├── rule_management_upload_rules.py             # 上传规则管理
│   │   ├── rule_matcher_helper.py                      # 规则匹配辅助
│   │   ├── direct_link_management.py                   # 直链管理
│   │   ├── direct_link_log_management.py               # 直链日志管理
│   │   └── ip_address_helper.py                        # IP地址辅助工具
│   ├── front/                                          # 前台用户功能模块
│   │   ├── __init__.py                                 # 用户前台初始化导入
│   │   ├── file_list_module.py                         # 文件列表模块
│   │   ├── file_operation_module.py                    # 文件操作模块
│   │   ├── site_basic_module.py                        # 站点基础模块
│   │   ├── user_interface.py                           # 用户接口模块
│   │   ├── short_link.py                               # 短链模块
│   │   ├── direct_short_chain_module.py                # 直链短链模块
│   │   ├── initialization_module.py                    # 初始化模块
│   │   ├── single_sign_on.py                           # 单点登录模块
│   │   ├── single_sign_on_interface.py                 # 单点登录接口
│   │   ├── server_proxy_download.py                    # 服务器代理下载
│   │   ├── server_proxy_upload.py                      # 服务器代理上传
│   │   ├── onlyoffice_related_interfaces.py            # OnlyOffice 接口
│   │   ├── gd_tools_assistive_module.py                # Google Drive 工具
│   │   ├── sharepoint_tools_assistive_module.py        # SharePoint 工具
│   │   ├── s3_tools_assistive_module.py                # S3 工具
│   │   ├── oneonefive_tools_assistive_module.py        # 115网盘工具
│   │   ├── open_115_url_controller.py                  # 115网盘 URL 控制器
│   │   └── onedrive_authentication_callback_module.py  # OneDrive 认证回调
│   ├── utils/                                          # 核心工具模块
│   │   ├── __init__.py                                 # 工具初始化导入
│   │   ├── api_client.py                               # HTTP 客户端封装
│   │   ├── models.py                                   # Pydantic 数据模型
│   │   ├── exceptions.py                               # 异常定义
│   │   ├── logger.py                                   # 日志处理
│   │   └── base.py                                     # 基础类和装饰器
│   └── py.typed                                        # 类型标注文件
├── docs/                                               # 文档目录
│   ├── README.md                                       # 项目说明
│   ├── LICENSE                                         # 许可证
│   └── LICENSE_CN                                      # 中文许可证
├── requirements.txt                                    # 依赖列表
├── setup.py                                            # 安装脚本
├── pyproject.toml                                      # 项目配置
├── MANIFEST.in                                         # 打包配置
├── clean_for_release.sh                                # 发布清理脚本
└── update_version.py                                   # 版本更新脚本

🔧 核心功能

前台功能模块 (front/)

模块 功能描述
file_list_module 文件列表查看、存储搜索、单个文件信息获取
file_operation_module 文件操作(创建、删除、重命名、移动、复制、上传)
site_basic_module 站点基础信息和配置获取、存储源配置
user_interface 用户登录、密码管理、验证码获取
short_link 批量生成直链和短链
direct_short_chain_module 直链短链生成和管理
initialization_module 系统初始化和配置检查
single_sign_on 单点登录功能
single_sign_on_interface 单点登录接口
server_proxy_download 服务器代理下载
server_proxy_upload 服务器代理上传
onlyoffice_related_interfaces OnlyOffice 文档预览和在线编辑
gd_tools_assistive_module Google Drive 集成和文件操作
sharepoint_tools_assistive_module SharePoint 集成和文件管理
s3_tools_assistive_module AWS S3 兼容存储集成
oneonefive_tools_assistive_module 115网盘集成
open_115_url_controller 115网盘 URL 控制器
onedrive_authentication_callback_module OneDrive 认证回调

管理员功能模块 (admin/)

模块 功能描述
user_management 用户管理(增删改查、复制、权限设置)
login_module 登录模块(2FA验证、设备绑定)
permission_module 权限模块(权限列表查看)
login_log_management 登录日志管理(日志查询)
single_sign_on_management 单点登录管理(SSO服务商配置)
site_setting_module 站点设置(全局配置管理)
storage_source_module_basic 存储源基础管理(增删改查、排序)
storage_source_module_filter_file 存储源过滤文件管理
storage_source_module_metadata 存储源元数据(支持类型、参数定义)
storage_source_module_permission 存储源权限控制
storage_source_module_readme 存储源README和密码文件夹管理
rule_management_view_rules 显示规则管理(规则增删改查、测试)
rule_management_upload_rules 上传规则管理(规则增删改查、测试)
rule_matcher_helper 规则匹配测试辅助工具
direct_link_management 直链管理(直链增删改查)
direct_link_log_management 直链日志管理(日志查询)
ip_address_helper IP地址辅助工具(IP信息查询)

工具模块 (utils/)

  • ApiClient: 核心 HTTP 客户端,提供统一的 API 调用接口和会话管理
  • Models: 基于 Pydantic 2.x 的数据模型,确保类型安全和数据验证
  • Exceptions: 自定义异常类,提供详细的错误信息和统一的错误处理
  • Logger: 日志处理工具,支持多级别日志记录
  • Base: 基础类和装饰器,提供自动参数解析功能

🔐 认证和安全

登录认证

# 基础登录
client.login(username="user", password="pass")

# 带验证码登录
client.login(
    username="user",
    password="pass",
    verify_code="1234",
    verify_code_uuid="uuid-string"
)

Token 管理

# 获取当前 token
token = client.token

# 使用预设 token 创建客户端
client = ApiClient(base_url="http://localhost:8080", token="your-token")

# 检查管理员权限
if client.is_admin:
    print("当前用户具有管理员权限")

🛠️ 高级用法

自定义请求

from ZfileSDK.utils.models import AjaxJsonVoid

# GET 请求
response = client.make_common_request("GET", "/api/endpoint", params={"key": "value"})

# POST 请求
response = client.post("POST", "/api/endpoint", data={"key": "value"})

错误处理

from ZfileSDK.utils import ApiException, CustomException

try:
    client.login(username="invalid", password="invalid")
except CustomException as e:
    print(f"业务错误: {e.msg} (代码: {e.code})")
except ApiException as e:
    print(f"API 错误: {e.message}")

使用装饰器

from ZfileSDK.utils.base import auto_args_from_model
from ZfileSDK.utils.models import FileListRequest


# 装饰器自动解析参数
@auto_args_from_model(model=FileListRequest)
def get_files(*, data: FileListRequest):
    # 自动验证和解析参数
    pass

📚 API 文档

详细的 API 文档请参考 ZFile 官方API文档

🤝 贡献指南

  1. Fork 本仓库
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 创建 Pull Request
  6. 确保代码符合 PEP 8 风格指南

请确保您的代码经过测试,并且添加了必要的文档注释。

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情,或查看 LICENSE_CN 文件的中文版本。

🔗 相关链接

📞 支持

如果您在使用过程中遇到问题,请通过以下方式获取帮助:

📝 注意事项

  • 本 SDK 仅支持 ZFile 版本 4.0.1 及以上。
  • 当前版本:1.1.1
  • 包名:zfile-pysdk

注意: 本 SDK 需要配合 ZFile 后端服务使用,请确保您的 ZFile 服务正常运行。

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

zfile_pysdk-1.1.1.tar.gz (60.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

zfile_pysdk-1.1.1-py3-none-any.whl (75.4 kB view details)

Uploaded Python 3

File details

Details for the file zfile_pysdk-1.1.1.tar.gz.

File metadata

  • Download URL: zfile_pysdk-1.1.1.tar.gz
  • Upload date:
  • Size: 60.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for zfile_pysdk-1.1.1.tar.gz
Algorithm Hash digest
SHA256 7d2fe4c306769e90fa9e935d2ce01afd674a1d98069458b10134e39c272128d7
MD5 bbd991b07c2c94a25e95a2027359374b
BLAKE2b-256 2ff339362898158ea54d4082f1225e5047849e52edcc89a2bd70c73a09893286

See more details on using hashes here.

File details

Details for the file zfile_pysdk-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: zfile_pysdk-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 75.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for zfile_pysdk-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a961d09f61981a70a53d10071ba16e3725cbb5d9e085b3cd6ce0dc5d9393c1f0
MD5 06fc97a523304cd8510d1486c5679a78
BLAKE2b-256 10089d1ea9f51599b423b2bf17a19c70ee04a5bfa4e05677c9e8cd590fffe0c2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page