贴吧接口层
新增特性
- 新增 `Client.get_blocks` 用于获取封禁用户列表。在大规模误删帖后,该接口有助于快速回滚操作
- `Client.get_homepage` 现在可以通过 `user.is_blocked` 得知用户是否被永久封禁屏蔽
- 使用 [`pysimdjson`](https://github.com/TkTech/pysimdjson) 增强 `json` 解析性能
变化特性
- 通过内部数据容器的大面积重构,现在用户访问那些服务端不提供的字段将直接触发 `AttributeError` 而不是得到一个缺省的默认值,这将有助于用户判断各个接口返回数据的覆盖范围
- 为了避免重复赋值和分支判断对性能的影响,以及允许原地清空数据的操作,大多数不用于外部接口参数的内部数据容器的 `__init__` 方法被悬空,并使用 `_init` 和 `_init_null` 两种初始化方法作为替代,这意味着用户在大多数情况下都不应手动初始化包含后两种初始化方法的内部数据容器
- `Client.get_recovers` 现在还会返回操作者名称以及被删除的内容
- 现在与 `PostInfoList.proto` 相关的数据结构 `ShareThread` (关联接口 `get_threads` `get_posts` ) 和 `Thread_home` (关联接口 `get_homepage`) 以及 `UserThread` (关联接口 `get_user_threads` `get_self_threads` `get_self_public_threads` ) 都会使用 `Media.proto` 而不是 `PbContent.proto` 获取图像信息,这意味着以上接口可以获取小图、大图、原图三种尺寸的图片链接,而不是先前的仅原图链接
- 由于官方变更, `Client.get_posts` 现在最多能为每条回复获取至多**50**条楼中楼 (变更前为10条),且这些随附的楼中楼都提供了用户的 `level` 和 `glevel` 。因此 `get_posts` 参数 `comment_rn` 的默认值被调整为 `30` 以匹配 `get_comments` 接口允许的最大 `rn`
- 内部命名习惯变更, `typedef` 变更为 `classdef` , `Fragments` 变更为 `Contents`
- 由于官方变更, `VoteOption` 不再包含 `image` 字段
- 由于不规范的 `json` 结构难以处理, `Client.get_recom_threads` 现已被移除
- 移除不必要的列表生成式. by kifuan
bug修复
- 67 68 描述的bug的产生原因是 `/pb/page` 接口新增了对 `_client_type` 参数的依赖,缺失该参数会导致获取的数据归属于默认的远古版本,表现出的具体特征有: 返回用户昵称为旧版, `user_list` 不包含数据,无法识别音频内容等。因此在添加上 `_client_type` 参数后, `2.10.1` 的以下变化可以被安全地回滚: `FragImage.big_src` 被重新添加, `FragLink.is_external` 恢复由 `/mo/q/checkurl` 前缀判断, `Posts` 和 `Threads` 的解析流程仅保留【同时使用 `user_list` + `author_id` 字段】而弃用【直接使用 `author` 字段】
- 通过添加 `_client_type` 参数, `get_posts` 接口现在可以获取小图、大图、原图三种尺寸的图片链接,而不是远古版本的仅原图链接
- 由于官方变更,如果在调用 `Client.get_posts` 时设置了 `with_comments=True` 参数,那么当前账号的 `BDUSS` 也需要作为参数发送,否则服务端不会返回楼中楼列表
应用接口层
变化特性
- 由于现在 `Client.get_posts` 能获取更多的楼中楼,默认的 `Reviewer.loop_get_comments` `Reviewer.multi_get_comments` 得到了可预见的性能改进,因为 `Client.get_comments` 的触发次数被大大降低