更新日志 | JKit v3.0.0b4

半个月前,我们发布了 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_infototal_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_timeexpire_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。

创造可能性。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容