Skip to content

v0.9.9

Choose a tag to compare

@Mrslippe Mrslippe released this 13 Sep 05:33
· 612 commits to main since this release

DDtoolkit v0.9.9

个人向 VTuber 帖子 / 账号证据归档工具 —— 定时抓取 B 站与微博动态、账号统计并归档到本地 SQLite,桌面端浏览与管理。

本版把 v0.9.4 → v0.9.9 六个批次的改进一次性放出:收录链路提速、动态流自适应节拍、
几处数据正确性修复(直播场次重复、投稿与投稿动态重复、增量漏帖),以及列表页筛选与
双月历区间选择器。同时清掉了一批「静默失败」隐患(调度线程可能整个停摆、旧库结构校验缺失)。

🐛 数据正确性(建议所有用户升级)

  • 增量抓取漏帖 —— 平台会把置顶帖插在流首且可多条,打乱时间序;旧规则「遇到第一条已入库帖就停」会漏掉同页靠后的新帖(实测微博一次补回 29 条)。改为整页扫完才停 + 置顶帖豁免。
  • 直播场次重复计 —— self 快照与 danmakus 同场被算作两场(实测 4/20 条)。合并判据由「起点相差 ≤90 分钟」改为区间重叠优先,并处理「两端都还没落 end」的开放式区间(跨 40 小时的伪场次)。
  • 投稿与投稿动态重复 —— 实测 322 个 bvid 同时存在两条。合并为一条,动态附言写入新增的 posts.note(详情页以「UP 主附言」标注);历史数据由 scripts/merge_video_dynamics.py 归并(实测删重复 323 条、补附言 31 条)。
  • 近期场次详情打不开内容 —— 合并后对外 live_id 取的是 B 站数字 id,而弹幕接口只认 danmakus uuid(HTTP 400)。改为按源优先级定权(danmakus > feed > self),不再由入库顺序决定。
  • 微博自动发帖单列 —— 会员升级 / 签到 / 推广这类平台自发的帖子归入新的 system 类型,不再混进正文类型筛选。

⚡ 收录与抓取调度

  • 收录新 V 大幅提速 —— 账号信息与首屏内容并发(原来串行),头像延后下载,去掉末尾 3~5 秒空转,WBI 密钥启动预热。实测账号信息可见 6.0s → 0.9s,首屏入库 0 → 33 条。
  • 动态流自适应节拍 —— 由固定 15 分钟改为按平台速率预算(12 req·min⁻¹,轮间至少 30s ± 抖动),一轮接一轮跑;风控按平台单独冷却。实测 8 个主账号一轮 8 请求 / 33s,相邻轮 80s。
  • 启动时补抓第三方数据 —— 启动后对每个 V 的主账号补一次粉丝历史与直播场次(<24h 跳过),直播日历与粉丝趋势不再等下一次每日批次。
  • 抢锁失败不再丢任务 —— 收录/加账号时若手动任务在跑导致抢锁失败,改为入队,由综合档在锁空闲时补抓。

🎨 界面

  • 列表页筛选收纳为单钮 —— 原先「搜索 + 时间 + 已删 + 已归档」四件并排,窄窗口下会把类型胶囊挤到换行;现在收敛为「搜索浮片 + 筛选 ▾」一个弹窗,内含状态 / 归档三态 / 时间范围三分区 + 重置。
  • 时间筛选换双月历区间选择器 —— 左右月份面板各自翻月、区间连续色带、今天环+点、六个预设(含今天口径)、草稿制(点「确认」才生效)。
  • 顶栏只显示"有起点有终点"的任务 —— 常态轮询(动态流、自动账号流)不再常驻顶栏,也不再把手动按钮禁掉(此前自动节拍期间按钮点不动,而后端其实是受理的)。
  • 档案设置窗口 —— 背景 / 名称 / 企划 / 生日 / 出道日 / 设定 / 头像 / 签名 / 账号管理集中一处;新增字段锁定(手改的昵称·签名·头像不会被下次抓取覆盖)。
  • card 视图平台徽章 —— 可点击打开账号主页、hover 尾部「+」快速加账号、长按拖动重排(顺序落库)。

🛡️ 稳定性

  • 修掉一个会让抓取整体停摆的隐患 —— 动态流速率预算在「单平台主账号数 > 每分钟预算」且窗口为空时越界抛错,而抛出点没有任何兜底,会让整条调度线程死掉(动态流与账号流一起停,且界面看不出异常)。现已修正为等待一个窗口。当前 7 个主账号不会触发,但继续收录就会踩到。
  • 旧库结构校验 —— 历史 create_all 时代的库在补列后会直接标记为"已是最新",但唯一约束补不了(SQLite 限制)。若 posts 还停留在旧的全局唯一键,联合投稿会被拒并当作重复静默丢弃。现在启动前会校验,不一致就明确报错而不是写下一个假的"已最新"。
  • 迁移链与 ORM 结构一致性用例 —— 两条建库路径(迁移 / create_all)从此逐表比对,并顺手对齐了 5 处可空性差异。
  • 布局探针加固 —— 「跑通了」不再等于「量到了」:量测段数不足、落到空置页、选择器踩空都会判失败(此前这些情况会静默打印"全部通过")。

📚 文档

  • 架构 / 术语表 / 数据层 / 抓取链路四份文档对齐到现行实现(迁移链补 f001–f003、表与端点计数修正、动态流周期与增量停止规则的错误描述改正)。
  • docs/DEV-LOOP.md 的探针断言表更新为八组不变量。

📦 资产

  • DDtoolkit_0.9.9_x64-setup.exe — Windows NSIS 安装包(用户级安装)
  • DDtoolkit-portable-win64.zip — 便携版(解压即用,含后端 onedir)

数据目录:安装版 %APPDATA%\com.ddtoolkit.app;便携版可设 DDTOOLKIT_DATA_DIR 自定义。
升级建议:从 v0.9.3 可直接覆盖安装(后端目录层级自 v0.9.2 起已修正)。

🔧 技术栈

  • 后端:Python 3.14 + FastAPI + SQLAlchemy 2.0 + SQLite(WAL) + APScheduler + Alembic(迁移链 f003)
  • 前端:Vite + React 18 + TypeScript + Tailwind v4 + ECharts 6 + Radix
  • 桌面壳:Tauri v2(拉起后端 + 注入空闲端口 + Job Object 进程看门狗)

⚖️ 许可

MIT License(见 LICENSE)。字体:阿里妈妈方圆体(官方许可免费商用 + 允许嵌入)。