Releases: lumina37/aiotieba
Releases · lumina37/aiotieba
v2.9.0
v2.8.3
贴吧接口层
新增特性
client.Client
新增接口del_threads
用于批量删除主题帖,del_posts
用于批量删除回复,agree
disagree
unagree
undisagree
分别用来点赞、点踩、取消点赞、取消点踩typedefs.UserInfo
新增字段sign
用于存放用户的个性签名typedefs._Container
以及它的派生类现在都是Hashable
对象
变化特性
client.Client
的各个ClientSession
以及TCPConnector
成员现在会采用惰性生成typedefs.FragLink
的text
属性现在会返回链接本身而不是链接标题
bug修复
- python/cpython#92841 修复了
asyncio
的_ProactorBasePipeTransport.__del__
中当SSL链接关闭时会出现的RuntimeError: Event loop is closed
应用层
变化特性
- 优先使用
Client.del_post
删除主题帖,这使得视频帖可以被删除 - 优化水经验脚本
v2.8.2
贴吧接口层
新增特性
- 在内存缓存中新增
fid
到fname
的映射
变化特性
- 所有不应被用户直接调用的私有函数现在都会在失败时直接抛出错误而不是返回
False
- 优化
typedefs
中各个类型的魔术方法的速度
bug修复
- 修复了
Client._id2user_info
中用户吧龄为-
时会无法被转换为浮点数的bug
应用接口层
变化特性
reviewer.Reviewer
不再继承自client.Client
。而仅仅会实例化一个Client
作为成员变量,并提供一些Client
中的热点函数的shortcutReviewer.database
更名为Reviewer.db
- 默认数据库名由
tieba_cloud_review
更改为aiotieba
应用层
变化特性
- 优化指令管理器的代码结构
- 优化文档
- 移除
vote_stat
指令
v2.8.1
贴吧接口层
新增特性
client.Client
现在会检查BDUSS
和STOKEN
的长度是否合法client.Client
现在会使用异步上下文管理器正确执行aiohttp.ClientResponse
的清理操作
变化特性
- 现在
aiotieba
仅会在工作目录下查找配置文件aiotieba.toml
而不是在脚本同级目录下查找config/config.toml
aiotieba
中logger
更名为log
,types
更名为typedefs
。同时将JSON_DECODER
拆分到helpers
中- 优化请求所需的
protobuf
的字段装填方式 - 删除不需要的
protobuf
字段定义 - 使用
typing
泛型支持优化类型定义 - 优化
Client.get_image
。现在对headers的分析会在读取body前进行 WebsocketResponse
使用asyncio.Future
替代asyncio.Event
WebsocketResponse.req_id
的生成方式得到简化- 优化日志记录格式
bug修复
- 修复了
Client._id2user_info
中当用户粉丝数超过10,000
时字符串x.x万
无法被转换为浮点数所导致的bug - 修复了转发来源帖的声音信息获取失败的bug
应用层
变化特性
- 使用
pyproject.toml
管理第三方库pytest
与black
的行为 - 指令管理器更名为
cmd_handler.py
并使用工作目录下的cmd_handler.toml
作为配置文件,而不是在脚本同级目录下查找config/listen_config.toml
- 改用
vtuber吧
的云审查作为范例 - 使用
pytest-asyncio
重写测试
v2.8.0
贴吧接口层
新增特性
types
中原来的Forum
被重命名为BasicForum
并新增一系列容器定义,如RankUser
RankUsers
MemberUser
MemberUsers
等,以支持对client.Client
中各个类方法的返回值优化工作types
中BasicUserInfo
的nick_name
属性被移动至UserInfo
。现在BasicUserInfo
仅包含不变量。UserInfo
的类属性被大幅扩充client.Client
中,方法get_bawu_dict
更名为get_bawu_info
client.Client
中,一系列方法的返回值得到优化,同时附带名称变更,如get_rank_list
更名为get_rank_users
并返回RankUsers
而不是原来的Tuple[List[Tuple[str, int, int, bool]], bool]
- 由于官方对贴吧吧务后台进行了优化,仅传递
portrait
参数的封禁请求以及仅传递user_id
参数的解封请求都不再会导致被封用户的头像和主页链接丢失,因此方法Client.block
和Client.unblock
的参数user (BasicUserInfo)
变更为_id (str | int)
以允许更快捷的方法调用 - 由于官方对解封申诉相关的技术栈进行了优化,并在官方层面支持批量申诉处理。现在
Client.get_unblock_appeals
方法使用/mo/q/getBawuAppealList
来获取json
格式数据,而相对地,原有的Client.get_unblock_appeal_list
方法使用/mo/q/bawuappeal
来获取ajax-html
格式数据。现在Client.handle_unblock_appeals
使用/mo/q/multiAppealhandle
来实现批量申诉处理 - 新增
Client.get_portrait
来获取用户头像,支持小、中、原图三种尺寸 reviewer.Reviewer
使用类属性img_hasher
来保留图像哈希缓存区,避免重复申请内存。该优化需要opencv-contrib-python>=4.6.0.66
支持- 进一步推广使用限定位置形参和限定关键字形参来规范函数调用时的语义表达
变化特性
- 从代码即文档的思想出发,广泛使用
property
来为类属性添加注释,同时设置一批只读属性 - 由于批量申诉处理得到了官方层面的支持,因此
reviewer.Reviewer
中的方法refuse_unblock_appeals
被弃用
应用层
新增特性
- 新指令
recover
用于恢复删帖 - 由于
client.Client
中的方法变动,调整了教程文档的内容
v2.7.5
贴吧接口层
新增特性
client.Client
新增get_forum_square
用于获取吧广场的贴吧列表,get_self_public_threads
用于获取本人发布的公开状态的主题帖列表,dislike_forum
用于屏蔽贴吧使其不再出现在首页推荐列表,undislike_forum
用于取消对贴吧的屏蔽,get_self_dislike_forum_list
用于获取屏蔽吧列表。同时新增多个proto
文件以支持上述功能Client.get_self_info
现在会优先使用缓存- 使用
yarl.URL
优化url可读性和解析速度
变化特性
- 由于使用了
weakref.WeakValueDictionary
的[]
语法以及str.removeperfix
方法,最低支持的Python
版本提高至3.9
Reviewer.compute_imghash
现在使用averageHash
替代pHash
以提高针对图像压缩算法的鲁棒性- 配置文件格式由
yaml
更换为toml
以提高纯文本编辑器下的编辑体验
应用接口层
变化特性
Database
的tid
记录表的功能更抽象化,不再是仅能记录临时屏蔽状态的表
应用层
新增特性
v2.7.4
v2.7.3
贴吧接口层
新增特性
- 新增属性
is_ws_aviliable
来判断websocket
是否可用,避免长连接keep-alive
超时的问题 Clinet
新增函数get_user_threads
来获取用户发表的处于公开状态的主题帖types.FragLink
新增属性url
用于解析外链。原link
属性更名为raw_url
ThreadInfo.proto
新增字段fname
,types._BasicContainer
新增属性fname
用于记录贴吧名
bug修复
- 由于长连接
keep-alive
超时的问题被解决,现在基于websocket
的私信功能已经完全稳定 - 此前
Client.get_image
会在cv2.imdecode
中libpng
的CRC
校验失败时返回None
,现在该函数会始终返回numpy.ndarray
实例 types.Reply
现在会正确执行空构造
v2.7.2
贴吧接口层
新增特性
- 当无法在指定位置找到配置文件时,
aiotieba
将尝试创建配置文件样例
bug修复
Client
现在可以正确地分发websocket
的返回数据。发送websocket
请求时,一个client.WebsocketResponse
实例将被构造并被添加至等待队列。_ws_dispatch
会将返回数据根据唯一的request_id
填充到对应的WebsocketResponse
中。最后用户通过异步函数WebsocketResponse.read
提取数据- 修复了
CommitPersonalMsgReqIdl.proto
中一个字段编号错误的bug
应用层
新增特性
- 新增了一些教学案例
vote_stat
指令现在需要至少3个参数
bug修复
- 修复了
refuse_appeals
指令的一个bug,现在不再由Reviewer.refuse_unblock_appeals
的返回值判断指令是否执行成功