Releases: lumina37/aiotieba
Releases · lumina37/aiotieba
v3.0.0
新增特性
- 新增对Python3.8的支持
- 使用
typing.TYPE_CHECKING
减少加载时间和运行时大小。得益于这一改进,现在opencv-contrib-python
不再是必需依赖 Comment
Comment_p
新增floor
属性用于表示所在楼层Appeal
现在会携带更丰富的信息,包括申诉者个人信息、封禁理由、申诉理由等
变化特性
reviewer
和database
被移除,相应的审查功能被迁移至aiotieba-reviewer
进行重构,大量特性被修改为模块级,以提供对函数式编程的更好支持- 日志现在需要通过
aiotieba.LOG().info(...)
而不是aiotieba.LOG.info(...)
的形式调用 - 由于protobuf的自动生成代码的限制,目前尚无法对mypy提供有效支持,
py.typed
被移除 - 由于贴吧服务端对rps的限制,
Client.get_posts
默认的comment_rn
参数由30减少至4 Appeal.aid
变更为Appeal.appeal_id
bug修复
Comments._init_null
现在会正确地将_objs
置为空Fan
Follow
中user_name
和user_id
位置颠倒的bug被修复- 修复了
Client.get_user_contents.UserInfo_u
的portrait
因为protobuf字段名填写错误导致的赋值异常 - 修复了
Client.get_uinfo_getUserInfo_web
中用户名可能为空并导致的赋值异常 - 修复了一些类型注解问题
v2.10.3
贴吧接口层
新增特性
- 支持通过
aiotieba.LOG.set_logger
更换日志记录器,通过aiotieba.LOG.set_formatter
更换日志格式 #73 TiebaLogger
现在可以默认构造名称,自定义日志保留天数、日志路径、记录级别
变化特性
- 不再自动生成配置文件模板
bug修复
Client.tieba_uid2user_info
未使用版本号作为参数导致无法获取新版用户昵称的bugComment.__repr__
现在会输出ppid
Client._get_uinfo_getUserInfo
中UserInfo_guinfo_web()._init_null()
报错的bugClient.get_threads
中Contents_t()._init_null()
报错的bugUserInfo_c
的is_bawu
属性被遗漏的bug- 适配因为长期未更换头像而不包含query_string的portrait值
应用接口层
新增特性
MySQLDB
现在可以自动创建数据表
bug修复
Reviewer._exce_delete
中因为user.level
不存在而报错的bugSQLiteDB
中异常捕获的bug
v2.10.2
贴吧接口层
新增特性
- 新增
Client.get_blocks
用于获取封禁用户列表。在大规模误删帖后,该接口有助于快速回滚操作 Client.get_homepage
现在可以通过user.is_blocked
得知用户是否被永久封禁屏蔽- 使用
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
的触发次数被大大降低
v2.10.1
贴吧接口层
变化特性
- 由于贴吧服务端发生变更,
FragImage.big_src
被移除 - 由于贴吧服务端发生变更,
FragLink.is_external
的判定方式由是否包含/mo/q/checkurl
前缀变更为是否以tieba.baidu.com
作为host
bug修复
v2.10.0
v2.9.7
v2.9.6
v2.9.5
贴吧接口层
新增特性
client.Client
新增类方法hash2image
用于通过百度图床hash获取指定尺寸的图片- 新增针对 Python3.11 的支持
变化特性
- 使用内置函数
bytes.hex
替代binascii.hexlify
Client._unpack_ws_bytes
现在使用memoryview
节省了解析过程中不必要的内存复制- 优化
Client._init_websocket
中的protobuf封装流程 typedefs.ProtocolText
不再支持运行时类型检查
bug修复
- 使用
importlib.resources
修复了配置文件模板无法正确生成的bug client._ForumInfoCache
现在会正确地使用OrderedDict
而不是dict
作为缓存容器
应用接口层
新增特性
reviewer.BaseReviewer
新增类方法has_QRcode
用于判断图像是否包含二维码
变化特性
reviewer.BaseReviewer
的类方法scan_QRcode
更名为decode_QRcode
v2.9.4
贴吧接口层
变化特性
- 主仓库名称由
Tieba-Manager
变更为aiotieba
Client.get_basic_user_info
被合并入Client.get_user_info
。Client.get_user_info
使用参数require (ReqUInfo)
来指定需要获取哪些用户信息BasicUserInfo
被合并入UserInfo
fid: fname
映射的本地缓存逻辑被迁移至类_ForumInfoCache
实现,现在最多缓存128对fid: fname
以避免无限的内存增长- 强制使用
ipv4
以避免百度ipv6
地址失效导致的异常
应用接口层
变化特性
- 需要读多写多的缓存功能迁移至
database.SQLiteDB
,使用SQLite
实现,有效避免MySQL
中频繁的锁竞争导致CPU占用高的问题
v2.9.3
贴吧接口层
新增特性
Fragments.__getitem__
和_Containers.__getitem__
现在会根据不同的输入参数类型返回对应的类型注解,通过typing.overload
实现
变化特性
typedefs
中的绝大多数类型现在都不再保留原始对象,这可以减少一定的内存占用
bug修复
- 修复了
Client.get_rank_users
get_member_users
get_blacklist_users
三个接口由于301重定向到https网址失败所导致的bug
应用层
变化特性
- 优化了多页审查的具体流程
bug修复
- 修复了
Reviewer.loop_handle_thread
和loop_handle_post
的分支bug,现在默认的审查规则可以正确实现全覆盖