半个月前,我们发布了 JKit v3.0.0b3,引入了一系列重构,以提升开发者体验,并加入了对贝交易平台简书贝市场订单数据的支持。
在 JKit v3.0.0b4 中,我们聚焦于扩展简书资产信息的获取范围,重写文档以降低开发者上手难度,并完善凭证校验机制,以降低无效凭证导致异常的可能性。
该版本中,我们引入了一个破坏性变更,需要您在升级时加以留意。
您可在此处查看 JKit v3.0.0b4 的 GitHub 版本发布:https://github.com/FHU-yezi/JKit/releases/tag/v3.0.0b4
功能变动
重写 README
在该版本中,我们重写了 README 文件,以反映 JKit 进入 Beta 阶段以来的一系列 API 变动,并保证示例代码符合最佳实践。
您可访问项目 GitHub 主页,查看最新版 README:https://github.com/FHU-yezi/JKit/tree/v3
支持获取会员推广链接
现已支持获取会员推广链接,原理详见文章 获取会员推广链接及其实现原理。
您需要使用 JianshuCredential
获取此数据,使用示例如下:
import asyncio
from jkit.credentials import JianshuCredential
from jkit.private.membership import Membership
TOKEN = "<YOUR_TOKEN>"
async def main() -> None:
credential = JianshuCredential.from_remember_user_token(TOKEN)
membership = Membership(credential=credential)
print(await membership.referral_url)
asyncio.run(main())
https://www.jianshu.com/mobile/club?ref=d140f464
[Breaking] 简书积分兑换平台与贝交易平台 avatar_url
改为完整 URL
获取简书积分兑换平台、贝交易平台用户数据时,avatar_url
已变更为完整的图片 URL,而不是相对路径。
在配置文件中修改对应数据源的 endpoint
不会导致此字段发生改变。
如您在代码中使用了此字段,升级 JKit 后需同步调整相关逻辑。
支持获取昨日收益和总收益
ResourceObject private.assets_wallet.AssetsWallet
新增属性 yesterday_income_info
和 total_income_info
,用于获取已在简书 App 资产页面隐藏的昨日收益 / 总收益数据。
上述属性返回 IncomeData
DataObject,其定义如下:
class IncomeData(DataObject, frozen=True):
poc: Decimal
fp_holding_own_reward: Decimal
fp_holding_referral_reward: Decimal
membership_referral_reward: Decimal
使用示例:
import asyncio
from jkit.credentials import JianshuCredential
from jkit.private.assets_wallet import AssetsWallet
TOKEN = "<YOUR_TOKEN>"
async def main() -> None:
credential = JianshuCredential.from_remember_user_token(TOKEN)
assets_wallet = AssetsWallet(credential=credential)
print(await assets_wallet.yesterday_income_info)
print(await assets_wallet.total_income_info)
asyncio.run(main())
IncomeData(
poc=Decimal('0'),
fp_holding_own_reward=Decimal('14.0384548525004842'),
fp_holding_referral_reward=Decimal('0'),
membership_referral_reward=Decimal('0')
)
IncomeData(
poc=Decimal('19513.7117565254521'),
fp_holding_own_reward=Decimal('8514.79138285225417'),
fp_holding_referral_reward=Decimal('0'),
membership_referral_reward=Decimal('2')
)
支持获取贝交易平台简书贝市场订单的最大可交易数量
OrderData
DataObject 新增了 maximum_trade_amount
字段,定义如下:
maximum_trade_amount: PositiveInt | None
添加贝交易平台凭证有效性与过期检测
贝交易平台数据源使用的凭证为 JWT 格式,在该版本中,我们通过正则表达式校验凭证格式是否正确,并向 BeijiaoyiCredential
新增了 create_time
和 expire_time
属性,表示该凭证的创建和过期时间。
截止到 2025.3.1,贝交易平台凭证有效期为一个月。
新增了关于凭证的异常类,相关拓扑关系如下:
-
JKitError
:JKit 全部异常的基类-
CredentialError
:凭证异常的基类-
InvalidCredentialError
:凭证无效 -
ExpiredCredentialError
:凭证已过期
-
-
创建凭证时,若凭证无效,将抛出 InvalidCredentialError
;若凭证已过期,将抛出 ExpiredCredentialError
。
使用凭证发起请求时,若凭证已过期,将抛出 ExpiredCredentialError
。
使用示例:
import asyncio
from jkit.credentials import BeijiaoyiCredential
TOKEN = "<YOUR_TOKEN>"
async def main() -> None:
credential = BeijiaoyiCredential.from_bearer_token(TOKEN)
print(f"创建时间:{credential.create_time}")
print(f"过期时间:{credential.expire_time}")
asyncio.run(main())
创建时间:2025-03-01 11:46:12
过期时间:2025-03-31 11:46:12
其它
- 将编解码器移至单独模块
- 移除不再需要的简书积分兑换平台匿名用户处理逻辑
错误修复
- 移除
send_request
函数调用中path
参数多余的参数与尾随斜线
总结
在本次版本更新中,我们实现了会员推广链接的获取,扩展了简书资产信息的获取范围,调整和新增了部分字段,并完善了凭证校验机制。
在接下来的开发中,我们将:
- 从配置和异常模块开始,逐步完善 JKit 的文档
- 在 JFetcher v4 研发过程中同步提升 JKit 的开发者体验
JKit 仍处于 Beta 测试阶段,可能随时进行破坏性变更,请您留意 GitHub 版本发布与更新日志。
感谢您使用 JKit。
创造可能性。