Skip to content

Releases: lumina37/aiotieba

v3.0.0

16 Jan 15:02
1a93a0d
Compare
Choose a tag to compare

新增特性

  • 新增对Python3.8的支持
  • 使用 typing.TYPE_CHECKING 减少加载时间和运行时大小。得益于这一改进,现在 opencv-contrib-python 不再是必需依赖
  • Comment Comment_p 新增 floor 属性用于表示所在楼层
  • Appeal 现在会携带更丰富的信息,包括申诉者个人信息、封禁理由、申诉理由等

变化特性

  • reviewerdatabase 被移除,相应的审查功能被迁移至 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 Followuser_nameuser_id 位置颠倒的bug被修复
  • 修复了 Client.get_user_contents.UserInfo_uportrait 因为protobuf字段名填写错误导致的赋值异常
  • 修复了 Client.get_uinfo_getUserInfo_web 中用户名可能为空并导致的赋值异常
  • 修复了一些类型注解问题

v2.10.3

13 Jan 07:29
4fba4b5
Compare
Choose a tag to compare

贴吧接口层

新增特性

  • 支持通过 aiotieba.LOG.set_logger 更换日志记录器,通过 aiotieba.LOG.set_formatter 更换日志格式 #73
  • TiebaLogger 现在可以默认构造名称,自定义日志保留天数、日志路径、记录级别

变化特性

  • 不再自动生成配置文件模板

bug修复

  • Client.tieba_uid2user_info 未使用版本号作为参数导致无法获取新版用户昵称的bug
  • Comment.__repr__ 现在会输出 ppid
  • Client._get_uinfo_getUserInfoUserInfo_guinfo_web()._init_null() 报错的bug
  • Client.get_threadsContents_t()._init_null() 报错的bug
  • UserInfo_cis_bawu 属性被遗漏的bug
  • 适配因为长期未更换头像而不包含query_string的portrait值

应用接口层

新增特性

  • MySQLDB 现在可以自动创建数据表

bug修复

  • Reviewer._exce_delete 中因为 user.level 不存在而报错的bug
  • SQLiteDB 中异常捕获的bug

v2.10.2

09 Jan 17:15
00d0d2a
Compare
Choose a tag to compare

贴吧接口层

新增特性

  • 新增 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条),且这些随附的楼中楼都提供了用户的 levelglevel 。因此 get_posts 参数 comment_rn 的默认值被调整为 30 以匹配 get_comments 接口允许的最大 rn
  • 内部命名习惯变更, typedef 变更为 classdefFragments 变更为 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 前缀判断, PostsThreads 的解析流程仅保留【同时使用 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

04 Jan 10:58
f6dd239
Compare
Choose a tag to compare

贴吧接口层

变化特性

  • 由于贴吧服务端发生变更, FragImage.big_src 被移除
  • 由于贴吧服务端发生变更, FragLink.is_external 的判定方式由是否包含 /mo/q/checkurl 前缀变更为是否以 tieba.baidu.com 作为host

bug修复

  • 修复了 Client.get_posts 因贴吧服务端发生变更而无法解析用户信息的问题。现在 typedef.Poststypedef.Threads 的解析流程会同时兼顾两种模式,即【新模式:直接使用 author 字段】以及【旧模式:同时使用 user_list + author_id 字段】. #67 #68

v2.10.0

31 Dec 16:30
509749d
Compare
Choose a tag to compare

贴吧接口层

变化特性

  • 底层http库由 aiohttp 变更为 httpx
  • clienttypedef 的组织结构优化

应用接口层

新增特性

  • MySQLDBimghash 相关接口新增基于汉明距离的近似匹配 (通常会触发全表计算,在表较大时效率远低于利用索引的精确匹配). by @Hawaii-ol

变化特性

  • imghash 相关的表需要重新构建
  • BaseReviewer.compute_imghash 返回类型由字符串变更为 uint64

v2.9.7

19 Dec 00:50
bce0d8d
Compare
Choose a tag to compare

贴吧接口层

新增特性

  • typedef.UserInfo 新增字段 glevel 表示用户成长等级
  • typedef.Thread 新增字段 is_help 表示该主题帖是否为求助帖
  • Thread Post 新增字段 vimage 表示虚拟形象相关信息

bug修复

  • 修复了一个获取用户主页不返回发帖量的bug

v2.9.6

20 Nov 07:40
7dbbc4a
Compare
Choose a tag to compare

贴吧接口层

新增特性

  • typedef 新增 VirtualImageUserInfo 新增字段 vimage 用于支持获取虚拟形象相关信息。现在你可以使用 obj.user.vimage.statestr(obj.user.vimage) 获取虚拟形象状态签名

变化特性

  • typedef.FragVoiceFragments.voice 被移除,新增 Fragments.has_voice

v2.9.5

05 Oct 14:02
8ad6bda
Compare
Choose a tag to compare

贴吧接口层

新增特性

  • 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

21 Sep 10:10
952e91c
Compare
Choose a tag to compare

贴吧接口层

变化特性

  • 主仓库名称由 Tieba-Manager 变更为 aiotieba
  • Client.get_basic_user_info 被合并入 Client.get_user_infoClient.get_user_info 使用参数 require (ReqUInfo) 来指定需要获取哪些用户信息
  • BasicUserInfo 被合并入 UserInfo
  • fid: fname 映射的本地缓存逻辑被迁移至类 _ForumInfoCache 实现,现在最多缓存128对 fid: fname 以避免无限的内存增长
  • 强制使用 ipv4 以避免百度 ipv6 地址失效导致的异常

应用接口层

变化特性

  • 需要读多写多的缓存功能迁移至 database.SQLiteDB ,使用 SQLite 实现,有效避免 MySQL 中频繁的锁竞争导致CPU占用高的问题

v2.9.3

14 Sep 10:28
beb5b38
Compare
Choose a tag to compare

贴吧接口层

新增特性

  • 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_threadloop_handle_post 的分支bug,现在默认的审查规则可以正确实现全覆盖