# ZFile SDK
一个功能完整的 Python SDK,用于与 ZFile 文件管理系统进行交互。该 SDK 封装了前端用户和管理员的完整 API 接口,提供了基于
Pydantic 的类型安全请求/响应处理和统一的错误管理机制。
## ✨ 特性
- 🔐 **完整的认证系统** - 支持用户登录、管理员认证、验证码和会话管理
- 📁 **文件管理功能** - 文件列表查看、文件操作(上传、下载、重命名、移动、复制、删除)
- 🔗 **链接管理** - 批量生成直链和短链
- 🌐 **多平台集成** - 支持 Google Drive、OneDrive、SharePoint、S3、115网盘等存储源
- ⚙️ **站点配置** - 获取站点全局设置、存储源配置等
- 👨💼 **管理员功能** - 完整的后台管理功能,包括用户管理、权限控制、存储源管理等
- 📝 **类型安全** - 基于 Pydantic 2.x 的强类型支持和数据验证
- 🛡️ **错误处理** - 统一的异常处理和错误管理机制
- 📊 **日志记录** - 完整的操作日志和调试信息
- 🔧 **装饰器支持** - 自动参数解析和模型验证
## 📦 安装(两种安装方式选择一种即可,建议从PyPI安装)
### 从 PyPI 安装(推荐)
```bash
pip install zfile-pysdk
```
### 从源码安装
```bash
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 更新
```bash
pip install --upgrade zfile-pysdk
```
#### 从源码更新
```bash
git pull origin main
pip install -r requirements.txt
pip install -e .
```
## 🚀 快速开始
### 基础用法
```python
# 导入核心客户端
from ZfileSDK.utils import ApiClient
```
### 创建客户端实例
```python
# 创建客户端实例
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()
```
### 使用上下文管理器
```python
# 使用上下文管理器自动处理登录和注销
with ApiClient(base_url="http://localhost:8080") as client:
client.login(username="admin", password="password")
# 执行各种操作...
# 自动清理资源
```
### 文件操作示例
```python
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
)
```
### 管理员功能示例
```python
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()
```
### 短链生成示例
```python
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**: 基础类和装饰器,提供自动参数解析功能
## 🔐 认证和安全
### 登录认证
```python
# 基础登录
client.login(username="user", password="pass")
# 带验证码登录
client.login(
username="user",
password="pass",
verify_code="1234",
verify_code_uuid="uuid-string"
)
```
### Token 管理
```python
# 获取当前 token
token = client.token
# 使用预设 token 创建客户端
client = ApiClient(base_url="http://localhost:8080", token="your-token")
# 检查管理员权限
if client.is_admin:
print("当前用户具有管理员权限")
```
## 🛠️ 高级用法
### 自定义请求
```python
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"})
```
### 错误处理
```python
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}")
```
### 使用装饰器
```python
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文档](https://api.zfile.vip/)。
## 🤝 贡献指南
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) 文件了解详情,或查看 [LICENSE_CN](./LICENSE_CN) 文件的中文版本。
## 🔗 相关链接
- [PyPI 包页面](https://pypi.org/project/zfile-pysdk/)
- [ZFile 官方网站](https://www.zfile.vip/)
- [ZFile GitHub](https://github.com/zfile-dev/zfile)
- [问题反馈](https://github.com/cuckoo711/zfile_sdk/issues)
## 📞 支持
如果您在使用过程中遇到问题,请通过以下方式获取帮助:
- 查看 [官方API文档](https://api.zfile.vip/)
- 提交 [Issue](https://github.com/cuckoo711/zfile_sdk/issues)
- 向我发送[邮件](mailto:3038604221@qq.com)获取支持
## 📝 注意事项
- 本 SDK 仅支持 ZFile 版本 4.0.1 及以上。
- 当前版本:**1.1.1**
- 包名:**zfile-pysdk**
---
**注意**: 本 SDK 需要配合 ZFile 后端服务使用,请确保您的 ZFile 服务正常运行。
Raw data
{
"_id": null,
"home_page": "https://github.com/cuckoo711/zfile_sdk",
"name": "zfile-pysdk",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.10",
"maintainer_email": null,
"keywords": "zfile, file management, api, sdk, cloud storage, file sharing",
"author": "cuckoo",
"author_email": "cuckoo <3038604221@qq.com>",
"download_url": "https://files.pythonhosted.org/packages/2f/f3/39362898158ea54d4082f1225e5047849e52edcc89a2bd70c73a09893286/zfile_pysdk-1.1.1.tar.gz",
"platform": null,
"description": "# ZFile SDK\n\n\u4e00\u4e2a\u529f\u80fd\u5b8c\u6574\u7684 Python SDK\uff0c\u7528\u4e8e\u4e0e ZFile \u6587\u4ef6\u7ba1\u7406\u7cfb\u7edf\u8fdb\u884c\u4ea4\u4e92\u3002\u8be5 SDK \u5c01\u88c5\u4e86\u524d\u7aef\u7528\u6237\u548c\u7ba1\u7406\u5458\u7684\u5b8c\u6574 API \u63a5\u53e3\uff0c\u63d0\u4f9b\u4e86\u57fa\u4e8e\nPydantic \u7684\u7c7b\u578b\u5b89\u5168\u8bf7\u6c42/\u54cd\u5e94\u5904\u7406\u548c\u7edf\u4e00\u7684\u9519\u8bef\u7ba1\u7406\u673a\u5236\u3002\n\n## \u2728 \u7279\u6027\n\n- \ud83d\udd10 **\u5b8c\u6574\u7684\u8ba4\u8bc1\u7cfb\u7edf** - \u652f\u6301\u7528\u6237\u767b\u5f55\u3001\u7ba1\u7406\u5458\u8ba4\u8bc1\u3001\u9a8c\u8bc1\u7801\u548c\u4f1a\u8bdd\u7ba1\u7406\n- \ud83d\udcc1 **\u6587\u4ef6\u7ba1\u7406\u529f\u80fd** - \u6587\u4ef6\u5217\u8868\u67e5\u770b\u3001\u6587\u4ef6\u64cd\u4f5c\uff08\u4e0a\u4f20\u3001\u4e0b\u8f7d\u3001\u91cd\u547d\u540d\u3001\u79fb\u52a8\u3001\u590d\u5236\u3001\u5220\u9664\uff09\n- \ud83d\udd17 **\u94fe\u63a5\u7ba1\u7406** - \u6279\u91cf\u751f\u6210\u76f4\u94fe\u548c\u77ed\u94fe\n- \ud83c\udf10 **\u591a\u5e73\u53f0\u96c6\u6210** - \u652f\u6301 Google Drive\u3001OneDrive\u3001SharePoint\u3001S3\u3001115\u7f51\u76d8\u7b49\u5b58\u50a8\u6e90\n- \u2699\ufe0f **\u7ad9\u70b9\u914d\u7f6e** - \u83b7\u53d6\u7ad9\u70b9\u5168\u5c40\u8bbe\u7f6e\u3001\u5b58\u50a8\u6e90\u914d\u7f6e\u7b49\n- \ud83d\udc68\u200d\ud83d\udcbc **\u7ba1\u7406\u5458\u529f\u80fd** - \u5b8c\u6574\u7684\u540e\u53f0\u7ba1\u7406\u529f\u80fd\uff0c\u5305\u62ec\u7528\u6237\u7ba1\u7406\u3001\u6743\u9650\u63a7\u5236\u3001\u5b58\u50a8\u6e90\u7ba1\u7406\u7b49\n- \ud83d\udcdd **\u7c7b\u578b\u5b89\u5168** - \u57fa\u4e8e Pydantic 2.x \u7684\u5f3a\u7c7b\u578b\u652f\u6301\u548c\u6570\u636e\u9a8c\u8bc1\n- \ud83d\udee1\ufe0f **\u9519\u8bef\u5904\u7406** - \u7edf\u4e00\u7684\u5f02\u5e38\u5904\u7406\u548c\u9519\u8bef\u7ba1\u7406\u673a\u5236\n- \ud83d\udcca **\u65e5\u5fd7\u8bb0\u5f55** - \u5b8c\u6574\u7684\u64cd\u4f5c\u65e5\u5fd7\u548c\u8c03\u8bd5\u4fe1\u606f\n- \ud83d\udd27 **\u88c5\u9970\u5668\u652f\u6301** - \u81ea\u52a8\u53c2\u6570\u89e3\u6790\u548c\u6a21\u578b\u9a8c\u8bc1\n\n## \ud83d\udce6 \u5b89\u88c5\uff08\u4e24\u79cd\u5b89\u88c5\u65b9\u5f0f\u9009\u62e9\u4e00\u79cd\u5373\u53ef\uff0c\u5efa\u8bae\u4ecePyPI\u5b89\u88c5\uff09\n\n### \u4ece PyPI \u5b89\u88c5\uff08\u63a8\u8350\uff09\n\n```bash\npip install zfile-pysdk\n```\n\n### \u4ece\u6e90\u7801\u5b89\u88c5\n\n```bash\ngit clone https://github.com/cuckoo711/zfile_sdk.git\ncd zfile_sdk\npip install -r requirements.txt\npip install -e .\n```\n\n### \u4f9d\u8d56\u8981\u6c42\n\n- Python 3.10+\n- requests ~= 2.32.4\n- pydantic ~= 2.11.7\n- urllib3 ~= 2.5.0\n\n### \u66f4\u65b0\u65b9\u5f0f\n\n#### \u4ece PyPI \u66f4\u65b0\n\n```bash\npip install --upgrade zfile-pysdk\n```\n\n#### \u4ece\u6e90\u7801\u66f4\u65b0\n\n```bash\ngit pull origin main\npip install -r requirements.txt\npip install -e .\n```\n\n## \ud83d\ude80 \u5feb\u901f\u5f00\u59cb\n\n### \u57fa\u7840\u7528\u6cd5\n\n```python\n# \u5bfc\u5165\u6838\u5fc3\u5ba2\u6237\u7aef\nfrom ZfileSDK.utils import ApiClient\n```\n\n### \u521b\u5efa\u5ba2\u6237\u7aef\u5b9e\u4f8b\n\n```python\n# \u521b\u5efa\u5ba2\u6237\u7aef\u5b9e\u4f8b\nclient = ApiClient(base_url=\"http://localhost:8080\")\n\n# \u7528\u6237\u767b\u5f55\nclient.login(username=\"your_username\", password=\"your_password\")\n\n# \u68c0\u67e5\u767b\u5f55\u72b6\u6001\nprint(f\"\u662f\u5426\u4e3a\u7ba1\u7406\u5458: {client.is_admin}\")\nprint(f\"\u5f53\u524d Token: {client.token}\")\n\n# \u4f7f\u7528\u5b8c\u6bd5\u540e\u6ce8\u9500\nclient.logout()\n```\n\n### \u4f7f\u7528\u4e0a\u4e0b\u6587\u7ba1\u7406\u5668\n\n```python\n# \u4f7f\u7528\u4e0a\u4e0b\u6587\u7ba1\u7406\u5668\u81ea\u52a8\u5904\u7406\u767b\u5f55\u548c\u6ce8\u9500\nwith ApiClient(base_url=\"http://localhost:8080\") as client:\n client.login(username=\"admin\", password=\"password\")\n # \u6267\u884c\u5404\u79cd\u64cd\u4f5c...\n # \u81ea\u52a8\u6e05\u7406\u8d44\u6e90\n```\n\n### \u6587\u4ef6\u64cd\u4f5c\u793a\u4f8b\n\n```python\nfrom ZfileSDK.front import FileListModule, FileOperationModule\n\n# \u83b7\u53d6\u6587\u4ef6\u5217\u8868\nfile_list_module = FileListModule(client)\nfiles = file_list_module.storage_files(\n storage_key=\"local\",\n path=\"/\",\n password=None\n)\n\n# \u521b\u5efa\u6587\u4ef6\u5939\nfile_op_module = FileOperationModule(client)\nresult = file_op_module.mkdir(\n storage_key=\"local\",\n path=\"/\",\n name=\"\u65b0\u6587\u4ef6\u5939\",\n password=None\n)\n```\n\n### \u7ba1\u7406\u5458\u529f\u80fd\u793a\u4f8b\n\n```python\nfrom ZfileSDK.admin import UserManagement, StorageSourceModuleBasic\n\n# \u7528\u6237\u7ba1\u7406\nuser_mgmt = UserManagement(client)\nusers = user_mgmt.list_users(\n page=1,\n size=10,\n order_by=\"id\",\n order_direction=\"desc\"\n)\n\n# \u5b58\u50a8\u6e90\u7ba1\u7406\nstorage_mgmt = StorageSourceModuleBasic(client)\nstorages = storage_mgmt.list_storage_sources()\n```\n\n### \u77ed\u94fe\u751f\u6210\u793a\u4f8b\n\n```python\nfrom ZfileSDK.front import DirectShortChainModule\n\n# \u751f\u6210\u77ed\u94fe\nshort_link_module = DirectShortChainModule(client)\nlinks = short_link_module.batch_generate(\n storage_key=\"local\",\n paths=[\"/file1.txt\", \"/file2.txt\"],\n expire_time=3600,\n)\n```\n\n## \ud83d\udcc1 \u9879\u76ee\u7ed3\u6784\n\n```\nzfile_sdk/\n\u251c\u2500\u2500 ZfileSDK/\n\u2502 \u251c\u2500\u2500 __init__.py # \u4e3b\u6a21\u5757\u521d\u59cb\u5316\u5bfc\u5165\n\u2502 \u251c\u2500\u2500 admin/ # \u7ba1\u7406\u5458\u529f\u80fd\u6a21\u5757\n\u2502 \u2502 \u251c\u2500\u2500 __init__.py # \u540e\u53f0\u7ba1\u7406\u5458\u6a21\u5757\u5bfc\u5165\n\u2502 \u2502 \u251c\u2500\u2500 user_management.py # \u7528\u6237\u7ba1\u7406\n\u2502 \u2502 \u251c\u2500\u2500 login_module.py # \u767b\u5f55\u6a21\u5757\n\u2502 \u2502 \u251c\u2500\u2500 permission_module.py # \u6743\u9650\u6a21\u5757\n\u2502 \u2502 \u251c\u2500\u2500 login_log_management.py # \u767b\u5f55\u65e5\u5fd7\u7ba1\u7406\n\u2502 \u2502 \u251c\u2500\u2500 single_sign_on_management.py # \u5355\u70b9\u767b\u5f55\u7ba1\u7406\n\u2502 \u2502 \u251c\u2500\u2500 site_setting_module.py # \u7ad9\u70b9\u8bbe\u7f6e\n\u2502 \u2502 \u251c\u2500\u2500 storage_source_module_basic.py # \u5b58\u50a8\u6e90\u57fa\u7840\u7ba1\u7406\n\u2502 \u2502 \u251c\u2500\u2500 storage_source_module_filter_file.py # \u5b58\u50a8\u6e90\u8fc7\u6ee4\u6587\u4ef6\n\u2502 \u2502 \u251c\u2500\u2500 storage_source_module_metadata.py # \u5b58\u50a8\u6e90\u5143\u6570\u636e\n\u2502 \u2502 \u251c\u2500\u2500 storage_source_module_permission.py # \u5b58\u50a8\u6e90\u6743\u9650\n\u2502 \u2502 \u251c\u2500\u2500 storage_source_module_readme.py # \u5b58\u50a8\u6e90README\n\u2502 \u2502 \u251c\u2500\u2500 rule_management_view_rules.py # \u663e\u793a\u89c4\u5219\u7ba1\u7406\n\u2502 \u2502 \u251c\u2500\u2500 rule_management_upload_rules.py # \u4e0a\u4f20\u89c4\u5219\u7ba1\u7406\n\u2502 \u2502 \u251c\u2500\u2500 rule_matcher_helper.py # \u89c4\u5219\u5339\u914d\u8f85\u52a9\n\u2502 \u2502 \u251c\u2500\u2500 direct_link_management.py # \u76f4\u94fe\u7ba1\u7406\n\u2502 \u2502 \u251c\u2500\u2500 direct_link_log_management.py # \u76f4\u94fe\u65e5\u5fd7\u7ba1\u7406\n\u2502 \u2502 \u2514\u2500\u2500 ip_address_helper.py # IP\u5730\u5740\u8f85\u52a9\u5de5\u5177\n\u2502 \u251c\u2500\u2500 front/ # \u524d\u53f0\u7528\u6237\u529f\u80fd\u6a21\u5757\n\u2502 \u2502 \u251c\u2500\u2500 __init__.py # \u7528\u6237\u524d\u53f0\u521d\u59cb\u5316\u5bfc\u5165\n\u2502 \u2502 \u251c\u2500\u2500 file_list_module.py # \u6587\u4ef6\u5217\u8868\u6a21\u5757\n\u2502 \u2502 \u251c\u2500\u2500 file_operation_module.py # \u6587\u4ef6\u64cd\u4f5c\u6a21\u5757\n\u2502 \u2502 \u251c\u2500\u2500 site_basic_module.py # \u7ad9\u70b9\u57fa\u7840\u6a21\u5757\n\u2502 \u2502 \u251c\u2500\u2500 user_interface.py # \u7528\u6237\u63a5\u53e3\u6a21\u5757\n\u2502 \u2502 \u251c\u2500\u2500 short_link.py # \u77ed\u94fe\u6a21\u5757\n\u2502 \u2502 \u251c\u2500\u2500 direct_short_chain_module.py # \u76f4\u94fe\u77ed\u94fe\u6a21\u5757\n\u2502 \u2502 \u251c\u2500\u2500 initialization_module.py # \u521d\u59cb\u5316\u6a21\u5757\n\u2502 \u2502 \u251c\u2500\u2500 single_sign_on.py # \u5355\u70b9\u767b\u5f55\u6a21\u5757\n\u2502 \u2502 \u251c\u2500\u2500 single_sign_on_interface.py # \u5355\u70b9\u767b\u5f55\u63a5\u53e3\n\u2502 \u2502 \u251c\u2500\u2500 server_proxy_download.py # \u670d\u52a1\u5668\u4ee3\u7406\u4e0b\u8f7d\n\u2502 \u2502 \u251c\u2500\u2500 server_proxy_upload.py # \u670d\u52a1\u5668\u4ee3\u7406\u4e0a\u4f20\n\u2502 \u2502 \u251c\u2500\u2500 onlyoffice_related_interfaces.py # OnlyOffice \u63a5\u53e3\n\u2502 \u2502 \u251c\u2500\u2500 gd_tools_assistive_module.py # Google Drive \u5de5\u5177\n\u2502 \u2502 \u251c\u2500\u2500 sharepoint_tools_assistive_module.py # SharePoint \u5de5\u5177\n\u2502 \u2502 \u251c\u2500\u2500 s3_tools_assistive_module.py # S3 \u5de5\u5177\n\u2502 \u2502 \u251c\u2500\u2500 oneonefive_tools_assistive_module.py # 115\u7f51\u76d8\u5de5\u5177\n\u2502 \u2502 \u251c\u2500\u2500 open_115_url_controller.py # 115\u7f51\u76d8 URL \u63a7\u5236\u5668\n\u2502 \u2502 \u2514\u2500\u2500 onedrive_authentication_callback_module.py # OneDrive \u8ba4\u8bc1\u56de\u8c03\n\u2502 \u251c\u2500\u2500 utils/ # \u6838\u5fc3\u5de5\u5177\u6a21\u5757\n\u2502 \u2502 \u251c\u2500\u2500 __init__.py # \u5de5\u5177\u521d\u59cb\u5316\u5bfc\u5165\n\u2502 \u2502 \u251c\u2500\u2500 api_client.py # HTTP \u5ba2\u6237\u7aef\u5c01\u88c5\n\u2502 \u2502 \u251c\u2500\u2500 models.py # Pydantic \u6570\u636e\u6a21\u578b\n\u2502 \u2502 \u251c\u2500\u2500 exceptions.py # \u5f02\u5e38\u5b9a\u4e49\n\u2502 \u2502 \u251c\u2500\u2500 logger.py # \u65e5\u5fd7\u5904\u7406\n\u2502 \u2502 \u2514\u2500\u2500 base.py # \u57fa\u7840\u7c7b\u548c\u88c5\u9970\u5668\n\u2502 \u2514\u2500\u2500 py.typed # \u7c7b\u578b\u6807\u6ce8\u6587\u4ef6\n\u251c\u2500\u2500 docs/ # \u6587\u6863\u76ee\u5f55\n\u2502 \u251c\u2500\u2500 README.md # \u9879\u76ee\u8bf4\u660e\n\u2502 \u251c\u2500\u2500 LICENSE # \u8bb8\u53ef\u8bc1\n\u2502 \u2514\u2500\u2500 LICENSE_CN # \u4e2d\u6587\u8bb8\u53ef\u8bc1\n\u251c\u2500\u2500 requirements.txt # \u4f9d\u8d56\u5217\u8868\n\u251c\u2500\u2500 setup.py # \u5b89\u88c5\u811a\u672c\n\u251c\u2500\u2500 pyproject.toml # \u9879\u76ee\u914d\u7f6e\n\u251c\u2500\u2500 MANIFEST.in # \u6253\u5305\u914d\u7f6e\n\u251c\u2500\u2500 clean_for_release.sh # \u53d1\u5e03\u6e05\u7406\u811a\u672c\n\u2514\u2500\u2500 update_version.py # \u7248\u672c\u66f4\u65b0\u811a\u672c\n```\n\n## \ud83d\udd27 \u6838\u5fc3\u529f\u80fd\n\n### \u524d\u53f0\u529f\u80fd\u6a21\u5757 (front/)\n\n| \u6a21\u5757 | \u529f\u80fd\u63cf\u8ff0 |\n|---------------------------------------------|--------------------------|\n| **file_list_module** | \u6587\u4ef6\u5217\u8868\u67e5\u770b\u3001\u5b58\u50a8\u641c\u7d22\u3001\u5355\u4e2a\u6587\u4ef6\u4fe1\u606f\u83b7\u53d6 |\n| **file_operation_module** | \u6587\u4ef6\u64cd\u4f5c\uff08\u521b\u5efa\u3001\u5220\u9664\u3001\u91cd\u547d\u540d\u3001\u79fb\u52a8\u3001\u590d\u5236\u3001\u4e0a\u4f20\uff09 |\n| **site_basic_module** | \u7ad9\u70b9\u57fa\u7840\u4fe1\u606f\u548c\u914d\u7f6e\u83b7\u53d6\u3001\u5b58\u50a8\u6e90\u914d\u7f6e |\n| **user_interface** | \u7528\u6237\u767b\u5f55\u3001\u5bc6\u7801\u7ba1\u7406\u3001\u9a8c\u8bc1\u7801\u83b7\u53d6 |\n| **short_link** | \u6279\u91cf\u751f\u6210\u76f4\u94fe\u548c\u77ed\u94fe |\n| **direct_short_chain_module** | \u76f4\u94fe\u77ed\u94fe\u751f\u6210\u548c\u7ba1\u7406 |\n| **initialization_module** | \u7cfb\u7edf\u521d\u59cb\u5316\u548c\u914d\u7f6e\u68c0\u67e5 |\n| **single_sign_on** | \u5355\u70b9\u767b\u5f55\u529f\u80fd |\n| **single_sign_on_interface** | \u5355\u70b9\u767b\u5f55\u63a5\u53e3 |\n| **server_proxy_download** | \u670d\u52a1\u5668\u4ee3\u7406\u4e0b\u8f7d |\n| **server_proxy_upload** | \u670d\u52a1\u5668\u4ee3\u7406\u4e0a\u4f20 |\n| **onlyoffice_related_interfaces** | OnlyOffice \u6587\u6863\u9884\u89c8\u548c\u5728\u7ebf\u7f16\u8f91 |\n| **gd_tools_assistive_module** | Google Drive \u96c6\u6210\u548c\u6587\u4ef6\u64cd\u4f5c |\n| **sharepoint_tools_assistive_module** | SharePoint \u96c6\u6210\u548c\u6587\u4ef6\u7ba1\u7406 |\n| **s3_tools_assistive_module** | AWS S3 \u517c\u5bb9\u5b58\u50a8\u96c6\u6210 |\n| **oneonefive_tools_assistive_module** | 115\u7f51\u76d8\u96c6\u6210 |\n| **open_115_url_controller** | 115\u7f51\u76d8 URL \u63a7\u5236\u5668 |\n| **onedrive_authentication_callback_module** | OneDrive \u8ba4\u8bc1\u56de\u8c03 |\n\n### \u7ba1\u7406\u5458\u529f\u80fd\u6a21\u5757 (admin/)\n\n| \u6a21\u5757 | \u529f\u80fd\u63cf\u8ff0 |\n|---------------------------------------|--------------------|\n| **user_management** | \u7528\u6237\u7ba1\u7406\uff08\u589e\u5220\u6539\u67e5\u3001\u590d\u5236\u3001\u6743\u9650\u8bbe\u7f6e\uff09 |\n| **login_module** | \u767b\u5f55\u6a21\u5757\uff082FA\u9a8c\u8bc1\u3001\u8bbe\u5907\u7ed1\u5b9a\uff09 |\n| **permission_module** | \u6743\u9650\u6a21\u5757\uff08\u6743\u9650\u5217\u8868\u67e5\u770b\uff09 |\n| **login_log_management** | \u767b\u5f55\u65e5\u5fd7\u7ba1\u7406\uff08\u65e5\u5fd7\u67e5\u8be2\uff09 |\n| **single_sign_on_management** | \u5355\u70b9\u767b\u5f55\u7ba1\u7406\uff08SSO\u670d\u52a1\u5546\u914d\u7f6e\uff09 |\n| **site_setting_module** | \u7ad9\u70b9\u8bbe\u7f6e\uff08\u5168\u5c40\u914d\u7f6e\u7ba1\u7406\uff09 |\n| **storage_source_module_basic** | \u5b58\u50a8\u6e90\u57fa\u7840\u7ba1\u7406\uff08\u589e\u5220\u6539\u67e5\u3001\u6392\u5e8f\uff09 |\n| **storage_source_module_filter_file** | \u5b58\u50a8\u6e90\u8fc7\u6ee4\u6587\u4ef6\u7ba1\u7406 |\n| **storage_source_module_metadata** | \u5b58\u50a8\u6e90\u5143\u6570\u636e\uff08\u652f\u6301\u7c7b\u578b\u3001\u53c2\u6570\u5b9a\u4e49\uff09 |\n| **storage_source_module_permission** | \u5b58\u50a8\u6e90\u6743\u9650\u63a7\u5236 |\n| **storage_source_module_readme** | \u5b58\u50a8\u6e90README\u548c\u5bc6\u7801\u6587\u4ef6\u5939\u7ba1\u7406 |\n| **rule_management_view_rules** | \u663e\u793a\u89c4\u5219\u7ba1\u7406\uff08\u89c4\u5219\u589e\u5220\u6539\u67e5\u3001\u6d4b\u8bd5\uff09 |\n| **rule_management_upload_rules** | \u4e0a\u4f20\u89c4\u5219\u7ba1\u7406\uff08\u89c4\u5219\u589e\u5220\u6539\u67e5\u3001\u6d4b\u8bd5\uff09 |\n| **rule_matcher_helper** | \u89c4\u5219\u5339\u914d\u6d4b\u8bd5\u8f85\u52a9\u5de5\u5177 |\n| **direct_link_management** | \u76f4\u94fe\u7ba1\u7406\uff08\u76f4\u94fe\u589e\u5220\u6539\u67e5\uff09 |\n| **direct_link_log_management** | \u76f4\u94fe\u65e5\u5fd7\u7ba1\u7406\uff08\u65e5\u5fd7\u67e5\u8be2\uff09 |\n| **ip_address_helper** | IP\u5730\u5740\u8f85\u52a9\u5de5\u5177\uff08IP\u4fe1\u606f\u67e5\u8be2\uff09 |\n\n### \u5de5\u5177\u6a21\u5757 (utils/)\n\n- **ApiClient**: \u6838\u5fc3 HTTP \u5ba2\u6237\u7aef\uff0c\u63d0\u4f9b\u7edf\u4e00\u7684 API \u8c03\u7528\u63a5\u53e3\u548c\u4f1a\u8bdd\u7ba1\u7406\n- **Models**: \u57fa\u4e8e Pydantic 2.x \u7684\u6570\u636e\u6a21\u578b\uff0c\u786e\u4fdd\u7c7b\u578b\u5b89\u5168\u548c\u6570\u636e\u9a8c\u8bc1\n- **Exceptions**: \u81ea\u5b9a\u4e49\u5f02\u5e38\u7c7b\uff0c\u63d0\u4f9b\u8be6\u7ec6\u7684\u9519\u8bef\u4fe1\u606f\u548c\u7edf\u4e00\u7684\u9519\u8bef\u5904\u7406\n- **Logger**: \u65e5\u5fd7\u5904\u7406\u5de5\u5177\uff0c\u652f\u6301\u591a\u7ea7\u522b\u65e5\u5fd7\u8bb0\u5f55\n- **Base**: \u57fa\u7840\u7c7b\u548c\u88c5\u9970\u5668\uff0c\u63d0\u4f9b\u81ea\u52a8\u53c2\u6570\u89e3\u6790\u529f\u80fd\n\n## \ud83d\udd10 \u8ba4\u8bc1\u548c\u5b89\u5168\n\n### \u767b\u5f55\u8ba4\u8bc1\n\n```python\n# \u57fa\u7840\u767b\u5f55\nclient.login(username=\"user\", password=\"pass\")\n\n# \u5e26\u9a8c\u8bc1\u7801\u767b\u5f55\nclient.login(\n username=\"user\",\n password=\"pass\",\n verify_code=\"1234\",\n verify_code_uuid=\"uuid-string\"\n)\n```\n\n### Token \u7ba1\u7406\n\n```python\n# \u83b7\u53d6\u5f53\u524d token\ntoken = client.token\n\n# \u4f7f\u7528\u9884\u8bbe token \u521b\u5efa\u5ba2\u6237\u7aef\nclient = ApiClient(base_url=\"http://localhost:8080\", token=\"your-token\")\n\n# \u68c0\u67e5\u7ba1\u7406\u5458\u6743\u9650\nif client.is_admin:\n print(\"\u5f53\u524d\u7528\u6237\u5177\u6709\u7ba1\u7406\u5458\u6743\u9650\")\n```\n\n## \ud83d\udee0\ufe0f \u9ad8\u7ea7\u7528\u6cd5\n\n### \u81ea\u5b9a\u4e49\u8bf7\u6c42\n\n```python\nfrom ZfileSDK.utils.models import AjaxJsonVoid\n\n# GET \u8bf7\u6c42\nresponse = client.make_common_request(\"GET\", \"/api/endpoint\", params={\"key\": \"value\"})\n\n# POST \u8bf7\u6c42\nresponse = client.post(\"POST\", \"/api/endpoint\", data={\"key\": \"value\"})\n```\n\n### \u9519\u8bef\u5904\u7406\n\n```python\nfrom ZfileSDK.utils import ApiException, CustomException\n\ntry:\n client.login(username=\"invalid\", password=\"invalid\")\nexcept CustomException as e:\n print(f\"\u4e1a\u52a1\u9519\u8bef: {e.msg} (\u4ee3\u7801: {e.code})\")\nexcept ApiException as e:\n print(f\"API \u9519\u8bef: {e.message}\")\n```\n\n### \u4f7f\u7528\u88c5\u9970\u5668\n\n```python\nfrom ZfileSDK.utils.base import auto_args_from_model\nfrom ZfileSDK.utils.models import FileListRequest\n\n\n# \u88c5\u9970\u5668\u81ea\u52a8\u89e3\u6790\u53c2\u6570\n@auto_args_from_model(model=FileListRequest)\ndef get_files(*, data: FileListRequest):\n # \u81ea\u52a8\u9a8c\u8bc1\u548c\u89e3\u6790\u53c2\u6570\n pass\n```\n\n## \ud83d\udcda API \u6587\u6863\n\n\u8be6\u7ec6\u7684 API \u6587\u6863\u8bf7\u53c2\u8003 [ZFile \u5b98\u65b9API\u6587\u6863](https://api.zfile.vip/)\u3002\n\n## \ud83e\udd1d \u8d21\u732e\u6307\u5357\n\n1. Fork \u672c\u4ed3\u5e93\n2. \u521b\u5efa\u7279\u6027\u5206\u652f (`git checkout -b feature/AmazingFeature`)\n3. \u63d0\u4ea4\u66f4\u6539 (`git commit -m 'Add some AmazingFeature'`)\n4. \u63a8\u9001\u5230\u5206\u652f (`git push origin feature/AmazingFeature`)\n5. \u521b\u5efa Pull Request\n6. \u786e\u4fdd\u4ee3\u7801\u7b26\u5408 PEP 8 \u98ce\u683c\u6307\u5357\n\n> \u8bf7\u786e\u4fdd\u60a8\u7684\u4ee3\u7801\u7ecf\u8fc7\u6d4b\u8bd5\uff0c\u5e76\u4e14\u6dfb\u52a0\u4e86\u5fc5\u8981\u7684\u6587\u6863\u6ce8\u91ca\u3002\n\n## \ud83d\udcc4 \u8bb8\u53ef\u8bc1\n\n\u672c\u9879\u76ee\u91c7\u7528 MIT \u8bb8\u53ef\u8bc1 - \u67e5\u770b [LICENSE](./LICENSE) \u6587\u4ef6\u4e86\u89e3\u8be6\u60c5\uff0c\u6216\u67e5\u770b [LICENSE_CN](./LICENSE_CN) \u6587\u4ef6\u7684\u4e2d\u6587\u7248\u672c\u3002\n\n## \ud83d\udd17 \u76f8\u5173\u94fe\u63a5\n\n- [PyPI \u5305\u9875\u9762](https://pypi.org/project/zfile-pysdk/)\n- [ZFile \u5b98\u65b9\u7f51\u7ad9](https://www.zfile.vip/)\n- [ZFile GitHub](https://github.com/zfile-dev/zfile)\n- [\u95ee\u9898\u53cd\u9988](https://github.com/cuckoo711/zfile_sdk/issues)\n\n## \ud83d\udcde \u652f\u6301\n\n\u5982\u679c\u60a8\u5728\u4f7f\u7528\u8fc7\u7a0b\u4e2d\u9047\u5230\u95ee\u9898\uff0c\u8bf7\u901a\u8fc7\u4ee5\u4e0b\u65b9\u5f0f\u83b7\u53d6\u5e2e\u52a9\uff1a\n\n- \u67e5\u770b [\u5b98\u65b9API\u6587\u6863](https://api.zfile.vip/)\n- \u63d0\u4ea4 [Issue](https://github.com/cuckoo711/zfile_sdk/issues)\n- \u5411\u6211\u53d1\u9001[\u90ae\u4ef6](mailto:3038604221@qq.com)\u83b7\u53d6\u652f\u6301\n\n## \ud83d\udcdd \u6ce8\u610f\u4e8b\u9879\n\n- \u672c SDK \u4ec5\u652f\u6301 ZFile \u7248\u672c 4.0.1 \u53ca\u4ee5\u4e0a\u3002\n- \u5f53\u524d\u7248\u672c\uff1a**1.1.1**\n- \u5305\u540d\uff1a**zfile-pysdk**\n\n---\n\n**\u6ce8\u610f**: \u672c SDK \u9700\u8981\u914d\u5408 ZFile \u540e\u7aef\u670d\u52a1\u4f7f\u7528\uff0c\u8bf7\u786e\u4fdd\u60a8\u7684 ZFile \u670d\u52a1\u6b63\u5e38\u8fd0\u884c\u3002\n",
"bugtrack_url": null,
"license": null,
"summary": "Python SDK for ZFile API - \u529f\u80fd\u5b8c\u6574\u7684ZFile\u6587\u4ef6\u7ba1\u7406\u7cfb\u7edfSDK",
"version": "1.1.1",
"project_urls": {
"Bug Tracker": "https://github.com/cuckoo711/zfile_sdk/issues",
"Documentation": "https://api.zfile.vip/",
"Homepage": "https://github.com/cuckoo711/zfile_sdk",
"Source Code": "https://github.com/cuckoo711/zfile_sdk"
},
"split_keywords": [
"zfile",
" file management",
" api",
" sdk",
" cloud storage",
" file sharing"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "10089d1ea9f51599b423b2bf17a19c70ee04a5bfa4e05677c9e8cd590fffe0c2",
"md5": "06fc97a523304cd8510d1486c5679a78",
"sha256": "a961d09f61981a70a53d10071ba16e3725cbb5d9e085b3cd6ce0dc5d9393c1f0"
},
"downloads": -1,
"filename": "zfile_pysdk-1.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "06fc97a523304cd8510d1486c5679a78",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.10",
"size": 75391,
"upload_time": "2025-07-12T15:12:13",
"upload_time_iso_8601": "2025-07-12T15:12:13.228451Z",
"url": "https://files.pythonhosted.org/packages/10/08/9d1ea9f51599b423b2bf17a19c70ee04a5bfa4e05677c9e8cd590fffe0c2/zfile_pysdk-1.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "2ff339362898158ea54d4082f1225e5047849e52edcc89a2bd70c73a09893286",
"md5": "bbd991b07c2c94a25e95a2027359374b",
"sha256": "7d2fe4c306769e90fa9e935d2ce01afd674a1d98069458b10134e39c272128d7"
},
"downloads": -1,
"filename": "zfile_pysdk-1.1.1.tar.gz",
"has_sig": false,
"md5_digest": "bbd991b07c2c94a25e95a2027359374b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.10",
"size": 60432,
"upload_time": "2025-07-12T15:12:15",
"upload_time_iso_8601": "2025-07-12T15:12:15.060447Z",
"url": "https://files.pythonhosted.org/packages/2f/f3/39362898158ea54d4082f1225e5047849e52edcc89a2bd70c73a09893286/zfile_pysdk-1.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-12 15:12:15",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "cuckoo711",
"github_project": "zfile_sdk",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "requests",
"specs": [
[
"~=",
"2.32.4"
]
]
},
{
"name": "pydantic",
"specs": [
[
"~=",
"2.11.7"
]
]
},
{
"name": "urllib3",
"specs": [
[
"~=",
"2.5.0"
]
]
},
{
"name": "setuptools",
"specs": [
[
"~=",
"80.3.1"
]
]
},
{
"name": "requests-toolbelt",
"specs": [
[
"~=",
"1.0.0"
]
]
}
],
"lcname": "zfile-pysdk"
}