A Python SDK for interacting with the Solar Network API(Not official)
Project description
Solar Network Python SDK API 文档
概述
Solar Network Python SDK 提供了与 Solar Network API 交互的完整解决方案。本 SDK 包含认证、账户管理、内容操作等所有核心功能。
安装
pip install solar-network-sdk
快速开始
基本认证
from solar_network_sdk import SolarNetworkClient, WebAuthClient
# 创建客户端
client = SolarNetworkClient()
# 获取认证客户端
web_auth = client.get_web_auth_client()
# 获取认证 URL
auth_url = web_auth.get_authentication_url()
print(f"请在浏览器中打开: {auth_url}")
# 等待用户认证
auth_result = web_auth.wait_for_auth()
if auth_result.status == "challenge":
# 签名挑战
signed_challenge = sign_challenge(auth_result.challenge)
# 交换令牌
token_result = web_auth.exchange_token(signed_challenge)
if token_result.status == "success":
# 设置令牌
client.set_token(token_result.token)
# 现在可以进行认证请求
account = client.get_account()
print(f"你好, {account.name}!")
核心类
SolarNetworkClient
主客户端类,提供所有 API 操作。
构造函数
SolarNetworkClient(
server_url: str = "https://api.solian.app",
token: Optional[str] = None,
timeout: int = 30
)
参数:
server_url: Solar Network API 服务器 URLtoken: 可选的认证令牌timeout: 请求超时时间(秒)
方法
认证相关
get_web_auth_client() -> WebAuthClient- 获取 Web 认证客户端实例
账户管理
-
get_account() -> Account- 获取当前账户信息
-
update_account(**kwargs) -> Account- 更新账户信息
-
get_account_profile() -> AccountProfile- 获取账户配置文件
-
update_account_profile(**kwargs) -> AccountProfile- 更新账户配置文件
-
get_account_status() -> AccountStatus- 获取账户状态
-
set_account_status(attitude: int, type: int = 0, label: str = "", symbol: Optional[str] = None, meta: Optional[Dict[str, Any]] = None) -> AccountStatus- 设置账户状态
-
clear_account_status() -> None- 清除账户状态
活动操作
-
check_in() -> CheckInResult- 执行每日签到
-
get_notable_days(start_date: Optional[datetime] = None, end_date: Optional[datetime] = None) -> List[NotableDay]- 获取显著日期
-
get_timeline_events(limit: int = 20, offset: int = 0, types: Optional[List[str]] = None) -> List[TimelineEvent]- 获取时间线事件
聊天操作
-
get_chat_rooms(limit: int = 20, offset: int = 0, types: Optional[List[int]] = None) -> List[ChatRoom]- 获取聊天室列表
-
get_chat_messages(room_id: str, limit: int = 50, before: Optional[str] = None, after: Optional[str] = None) -> List[ChatMessage]- 获取聊天室消息
-
send_chat_message(room_id: str, content: str, type: str = "text", nonce: Optional[str] = None, meta: Optional[Dict[str, Any]] = None) -> ChatMessage- 发送聊天消息
文件操作
-
get_file_pools() -> List[FilePool]- 获取文件池列表
-
get_cloud_files(limit: int = 50, offset: int = 0, pool_id: Optional[str] = None) -> List[CloudFile]- 获取云文件列表
-
upload_file(file_path: str, pool_id: Optional[str] = None, name: Optional[str] = None, description: Optional[str] = None) -> DriveTask- 上传文件
帖子操作
-
create_post(content: str, title: Optional[str] = None, visibility: int = 0, type: int = 0, attachments: Optional[List[str]] = None, tags: Optional[List[str]] = None, categories: Optional[List[str]] = None) -> Post- 创建帖子
-
get_posts(limit: int = 20, offset: int = 0, types: Optional[List[int]] = None, visibility: Optional[List[int]] = None) -> List[Post]- 获取帖子列表
钱包操作
-
get_wallet() -> Wallet- 获取钱包信息
-
get_wallet_pockets() -> List[WalletPocket]- 获取钱包口袋
-
get_wallet_transactions(limit: int = 50, offset: int = 0, types: Optional[List[int]] = None) -> List[Transaction]- 获取钱包交易
工具方法
-
set_token(token: str) -> None- 设置认证令牌
-
clear_token() -> None- 清除认证令牌
WebAuthClient
Web 认证客户端,用于与 Solar Network 桌面应用进行认证交互。
构造函数
WebAuthClient(
base_url: str = "http://127.0.0.1",
default_port: int = 40000,
web_url: str = "https://app.solian.fr"
)
参数:
base_url: 本地服务器基础 URLdefault_port: 默认连接端口web_url: Solar Network Web URL
属性
port: int- 获取/设置当前端口
方法
URL 生成
-
get_authentication_url() -> str- 获取认证 URL
-
get_protocol_challenge_url(app_slug: str, redirect_uri: str, state: Optional[str] = None) -> str- 获取协议挑战 URL
-
get_protocol_exchange_url(signed_challenge: str, redirect_uri: str, secret_id: Optional[str] = None, state: Optional[str] = None) -> str- 获取协议交换 URL
认证流程
-
wait_for_auth(port: Optional[int] = None, app_name: str = "PythonApp") -> WebAuthResult- 等待用户认证响应
-
exchange_token(signed_challenge: str, port: Optional[int] = None, device_info: Optional[Dict[str, Any]] = None, secret_id: Optional[str] = None) -> WebAuthResult- 交换认证令牌
-
fetch_account_info(port: Optional[int] = None, token: str = "") -> Dict[str, Union[bool, Optional[Dict[str, Any]], Optional[str]]]- 获取账户信息
-
authenticate(app_name: str = "PythonApp", sign_challenge: Optional[callable] = None) -> WebAuthResult- 完整认证流程
数据模型
Account
账户信息模型。
字段:
id: str- 账户 IDname: str- 账户名称email: str- 邮箱地址status: int- 账户状态created_at: datetime- 创建时间
AccountProfile
账户配置文件模型。
字段:
nick: str- 昵称birthday: Optional[datetime]- 生日gender: int- 性别bio: str- 个人简介
ChatRoom
聊天室模型。
字段:
id: str- 聊天室 IDname: str- 聊天室名称type: int- 聊天室类型is_public: bool- 是否公开
CloudFile
云文件模型。
字段:
id: str- 文件 IDname: str- 文件名size: int- 文件大小mime_type: str- MIME 类型url: str- 文件 URL
Post
帖子模型。
字段:
id: str- 帖子 IDtitle: str- 帖子标题content: str- 帖子内容visibility: int- 可见性created_at: datetime- 创建时间
Wallet
钱包模型。
字段:
id: str- 钱包 IDpockets: List[WalletPocket]- 钱包口袋列表
WalletPocket
钱包口袋模型。
字段:
currency: str- 货币类型amount: float- 金额
错误处理
所有 API 方法都可能抛出异常。建议使用 try-catch 块进行错误处理:
try:
account = client.get_account()
print(f"账户信息: {account.name}")
except Exception as e:
print(f"获取账户信息失败: {e}")
分页
大多数列表方法都支持分页参数:
limit: 返回项目数量offset: 偏移量before/after: 时间戳分页
示例:
# 获取前 20 个项目
items = client.get_posts(limit=20, offset=0)
# 获取下一页
next_items = client.get_posts(limit=20, offset=20)
异步支持
分页控制器支持异步操作:
from solar_network_sdk.pagination import AsyncPaginationController
async def fetch_data():
controller = AsyncPaginationController(fetch_func)
await controller.refresh()
await controller.fetch_further()
最佳实践
- 认证安全: 始终使用安全的方式存储和传输认证令牌
- 错误处理: 为所有 API 调用添加适当的错误处理
- 分页: 处理大量数据时使用分页
- 超时: 根据需要调整请求超时时间
- 类型检查: 利用类型注解提高代码质量
贡献
欢迎贡献代码!请阅读 CONTRIBUTING.md 了解详细信息。
许可证
MIT License - 详见 LICENSE 文件。
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
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 solar_network_sdk-1.0.2.tar.gz.
File metadata
- Download URL: solar_network_sdk-1.0.2.tar.gz
- Upload date:
- Size: 27.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a639d7f578d0eaf85f66f341d5bf3ff06f824a708e2628a574c620210cb9a39
|
|
| MD5 |
b6991a629f9a9b316f09cb5b09d8976d
|
|
| BLAKE2b-256 |
1395597f44be90df8e1511d4688814308cfaca7e4717efed2e74e2a55a64f60b
|
File details
Details for the file solar_network_sdk-1.0.2-py3-none-any.whl.
File metadata
- Download URL: solar_network_sdk-1.0.2-py3-none-any.whl
- Upload date:
- Size: 31.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ba369472c78ce5abfd379f439749874c77f03d981f3dd07be151aa9833a977c3
|
|
| MD5 |
ab924a38339a08fd05ae2616626b5530
|
|
| BLAKE2b-256 |
e151838f75b3e7b8a37ccd77f922779f8b22d4554d1ca1ad82c576bf321921de
|