多吉云上传工具 - 支持图片和文件上传到多吉云存储
Project description
dogecloud-uploader
多吉云上传工具 - 支持图片和文件上传到多吉云存储
特性
- 🚀 简单易用 - 提供简化的API接口,开箱即用
- 🖼️ 图片优化 - 自动WebP转换,减少存储空间
- 🔐 安全可靠 - 完善的权限控制和错误处理
- 📦 多种格式 - 支持图片、HTML、通用文件上传
- 🌐 多种来源 - 支持本地文件、HTTP/HTTPS URL、Base64 data URL
- ⚡ 异步支持 - 基于asyncio的高性能异步API
- 🛠️ CLI工具 - 提供命令行工具,方便集成到工作流中
安装
pip install dogecloud-uploader
快速开始
环境配置
首先设置多吉云认证信息:
# 方式1: 使用环境变量
export DOGECLOUD_ACCESS_KEY="your_access_key"
export DOGECLOUD_SECRET_KEY="your_secret_key"
export DOGECLOUD_BUCKET_NAME="your_bucket"
export DOGECLOUD_CDN_DOMAIN="https://your.cdn.domain"
# 方式2: 使用CLI配置工具
dogecloud config --access-key your_key --secret-key your_secret
Python API
简单图片上传
import asyncio
from dogecloud_uploader import upload_image
async def main():
# 上传网络图片
result = await upload_image("https://example.com/image.jpg")
print(f"上传成功: {result['file_url']}")
# 上传Base64图片
base64_url = "data:image/jpeg;base64,/9j/4AAQSkZJRgABA..."
result = await upload_image(base64_url, custom_filename="my_image.webp")
print(f"上传成功: {result['file_url']}")
asyncio.run(main())
文件上传
import asyncio
from dogecloud_uploader import upload_file
async def main():
# 上传HTML报告
result = await upload_file("report.html", filename="report.html")
print(f"报告地址: {result['file_url']}")
asyncio.run(main())
高级API
import asyncio
from dogecloud_uploader import DogecloudClient
async def main():
# 创建客户端实例
client = DogecloudClient(
access_key="your_key",
secret_key="your_secret",
bucket_name="your_bucket",
enable_compression=True # 启用WebP压缩
)
# 上传图片
result = await client.upload_file("image.jpg", "optimized_image.webp", "image")
print(f"上传成功: {result['file_url']}")
asyncio.run(main())
命令行工具
基本用法
# 上传本地图片
dogecloud upload image.jpg
# 上传网络图片
dogecloud upload https://example.com/image.jpg --filename custom.webp
# 上传HTML文件
dogecloud upload report.html --type html
# 禁用WebP转换
dogecloud upload image.png --no-webp
# 详细输出
dogecloud upload image.jpg --verbose
测试连接
# 测试多吉云连接
dogecloud test
# 查看版本
dogecloud version
API参考
upload_image()
async def upload_image(
image_url: str,
custom_filename: Optional[str] = None,
enable_webp_conversion: bool = True,
client: Optional[DogecloudClient] = None
) -> Dict[str, Any]
参数:
image_url: 图片URL,支持HTTP/HTTPS URL或Base64 data URLcustom_filename: 自定义文件名(可选)enable_webp_conversion: 是否启用WebP转换(默认True)client: 多吉云客户端实例(可选)
返回值:
{
'success': True,
'file_url': 'https://cdn.example.com/image.webp',
'object_key': 'images/image.webp',
'filename': 'image.webp',
'size': 12345,
'format': 'WEBP',
'original_md5': 'abc123...'
}
upload_file()
async def upload_file(
file_path: str,
filename: Optional[str] = None,
file_type: str = 'html',
client: Optional[DogecloudClient] = None
) -> Dict[str, Any]
参数:
file_path: 本地文件路径filename: 上传后的文件名(可选)file_type: 文件类型 ('html', 'image' 等)client: 多吉云客户端实例(可选)
DogecloudClient
class DogecloudClient:
def __init__(
self,
access_key: Optional[str] = None,
secret_key: Optional[str] = None,
bucket_name: Optional[str] = None,
cdn_domain: Optional[str] = None,
enable_compression: Optional[bool] = None
)
配置选项
环境变量
| 变量名 | 说明 | 默认值 |
|---|---|---|
DOGECLOUD_ACCESS_KEY |
多吉云访问密钥 | 必需 |
DOGECLOUD_SECRET_KEY |
多吉云密钥 | 必需 |
DOGECLOUD_BUCKET_NAME |
存储桶名称 | default-bucket |
DOGECLOUD_CDN_DOMAIN |
CDN域名 | 无 |
DOGECLOUD_ENABLE_COMPRESSION |
启用压缩 | true |
配置文件
也可以在 ~/.dogecloud/config 文件中配置:
DOGECLOUD_ACCESS_KEY=your_access_key
DOGECLOUD_SECRET_KEY=your_secret_key
DOGECLOUD_BUCKET_NAME=your_bucket
DOGECLOUD_CDN_DOMAIN=https://your.cdn.domain
错误处理
from dogecloud_uploader import upload_image
from dogecloud_uploader.exceptions import (
DogecloudError,
AuthenticationError,
ValidationError,
UploadError,
ConfigurationError
)
async def safe_upload():
try:
result = await upload_image("https://example.com/image.jpg")
return result
except AuthenticationError as e:
print(f"认证失败: {e}")
except ValidationError as e:
print(f"验证失败: {e}")
except UploadError as e:
print(f"上传失败: {e}")
except DogecloudError as e:
print(f"多吉云错误: {e}")
开发
安装开发依赖
git clone https://github.com/overseas-report/dogecloud-uploader.git
cd dogecloud-uploader
pip install -e ".[dev]"
运行测试
# 运行所有测试
pytest
# 运行特定测试
pytest tests/test_client.py
# 生成覆盖率报告
pytest --cov=dogecloud_uploader --cov-report=html
代码格式化
# 格式化代码
black dogecloud_uploader tests
# 排序import
isort dogecloud_uploader tests
# 类型检查
mypy dogecloud_uploader
许可证
MIT License
贡献
欢迎提交Issue和Pull Request!
更新日志
v1.0.0 (2024-01-XX)
- 🎉 首次发布
- ✨ 支持图片和文件上传
- ✨ WebP自动转换
- ✨ CLI工具
- ✨ 异步API支持
- 🔒 完善的安全措施
支持
如果你遇到问题或有建议,请:
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
dogecloud_uploader-1.1.0.tar.gz
(22.0 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 dogecloud_uploader-1.1.0.tar.gz.
File metadata
- Download URL: dogecloud_uploader-1.1.0.tar.gz
- Upload date:
- Size: 22.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
588c16d61a969c2be424231a21fb39522c4ec46bef279f0039cd0cf485a09780
|
|
| MD5 |
8394f1d49bb9c731233b3e2615abb56c
|
|
| BLAKE2b-256 |
89ba460add71c64143216cfe50c42c3fa0e6f292fed0d116cc6082a87877a967
|
File details
Details for the file dogecloud_uploader-1.1.0-py3-none-any.whl.
File metadata
- Download URL: dogecloud_uploader-1.1.0-py3-none-any.whl
- Upload date:
- Size: 18.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
440a10c56546d2294c3199644d11300acd5daf527e7c1ba60eb7c61648d8fd8f
|
|
| MD5 |
0e672454d78c851756233f7ec16c27c5
|
|
| BLAKE2b-256 |
3a6bfd04f783aaf0da4a41e1da5c121a5cf9e0c6a3a13e842b8e9840e8ee3a3b
|