Repository navigation
v1.0.1
DDtoolkit v1.0.1
个人向 VTuber 帖子 / 账号证据归档工具 —— 定时抓取 B 站与微博动态、账号统计并归档到本地 SQLite,桌面端浏览与管理。
从 v1.0.0 到 v1.0.1 共 2 个批次(devlog 083–084),两件事:
① 添加 V 不再受候选池名单限制 —— 可以直接从 B 站按 uid 或名称加人,
并在落地过程中修掉两个"点一下就报错"的真问题(都由用户实测发现);
② 发布链自动化 —— 打版/推送/建 Release 收敛成一条命令,产物形态有了机器判据。
数据库无迁移(仍是 f004),覆盖安装即可。
✨ 添加 V:候选池 + B 站直查双来源
原来只能从离线候选池(vtubers.csv 快照)里加人,池子里没有的新 V 就无从添加。现在:
- 本地候选即时匹配:候选池 + 弹幕站索引(
thirdparty_vtubers)两个来源合并去重,
输入即搜(不打上游),带粉丝数 / 企划 / 来源徽标; - B 站直查(显式触发):输入名字后回车或点「搜索 B 站」才请求 B 站 ——
纯数字≥5 位按 UID 精确查,其余按名称模糊搜索(每页 20 条,可加载更多,最多 3 页);
结果带粉丝数 / 认证说明 / 是否直播中 / 是否已订阅,点一行即收录; - 风控预算:0.8 秒串行间隔 + 每分钟 20 次上限 + 5 分钟结果缓存,
敲键不会消耗上游请求; - 已订阅的行置灰、上游失败原样显示原因(不是含糊的"没有这个人")。
池外收录的名称一律以服务端实查 B 站的结果为准,客户端传什么都不作数。
🐛 修掉两个真问题(都由实测发现,建议升级)
- 候选池里没有的新 V 点不动 —— 本地检索合并进来的"弹幕索引来源"条目被错误地
当成"候选池内条目"提交,后端查不到就报「候选池中不存在该 platform_uid」。
实测同一关键词的 37 条候选里有 19 条都是这种"点一下就红字"。
现在索引来源走池外通道(服务端实查后建库),索引里的非 B 站条目则明确置灰并说明原因。 - 未登录时的失败口径 —— B 站检索与 UID 直查都需要 WBI 签名密钥(该接口要求登录),
未登录时旧写法直接抛错(界面弹一段程序异常),池外收录还会把"你没登录"报成
"B 站没有这个 UID"。现在:未登录 → 明确提示"请先在顶栏登录 B 站";
"确实没这个人"是 404,"没问到"(未登录 / 网络 / 风控)是 503。
🔍 验证基建
- 新增 UI 探针
--add-v:断言"敲键只打本地检索、B 站请求为 0 次"(显式触发这条决策的
机器判据)、结果行可命中(看得见就点得着)、纯数字输入换成「按 UID 添加」、
来源→收录路径分流(索引来源绝不能走池内路径); - 顺手修掉两处"判据自己不可靠":① 顶栏断言把外部数据同步误判成"自动节拍占了顶栏"
(三档宽度一起假失败);② NSIS「后端目录被打平」的判据样本形状写错、正则永不命中 ——
现在有一条直接量真实installer.nsi的用例兜住它; - 用例:后端 362 条、前端 138 条。
🚀 发布链(维护者)
- 新增
scripts/release.py:一条命令跑完预检 → 版本号六处同步 → 门禁 →
整包构建 → 产物校验(资产大小 / 旧版本残留 / 安装包_internal层级 / 便携包结构 /
主程序版本号)→ 提交与 tag → 推送 → 建 Release 传资产 → 发布报告;
失败即停且不写文件,可按--from <步骤>续跑,--dry-run可预演; scripts/upload_release_assets.py改为幂等:Release 已存在则复用并覆盖描述,
同名同大小的资产跳过、变了的重传 —— 发布中途失败重跑不再撞 422 或落下半份资产。
📦 资产
DDtoolkit_1.0.1_x64-setup.exe— Windows NSIS 安装包(用户级安装)DDtoolkit-portable-win64.zip— 便携版(解压即用,含后端 onedir)
数据目录:安装版 %APPDATA%\com.ddtoolkit.app;便携版可设 DDTOOLKIT_DATA_DIR 自定义。
可直接覆盖安装(后端目录层级自 v0.9.2 起已修正)。
⚠️ 升级说明
- 数据库无迁移:仍是 f004,首次启动不需要额外等待;
- 添加 V 的 B 站直查需要 B 站登录态(WBI 签名密钥要求登录)—— 本应用为抓取动态
本来就需要扫码登录,所以正常情况下不受影响;未登录时界面会明确提示去登录; - 候选池(
vtubers.csv)仍是快照:本次给的是"绕过名单"的通道,
池子本身不会自动更新; - 微博取数同样需要登录态:未登录时其动态名单整条跳过,重新扫码后自动恢复。
🔧 技术栈
- 后端:Python 3.14 + FastAPI + SQLAlchemy 2.0 + SQLite(WAL) + APScheduler + Alembic(迁移链 f004)
- 前端:Vite + React 18 + TypeScript + Tailwind v4 + ECharts 6 + Radix
- 桌面壳:Tauri v2(拉起后端 + 注入空闲端口 + Job Object 进程看门狗)
⚖️ 许可
MIT License(见 LICENSE)。字体:阿里妈妈方圆体(官方许可免费商用 + 允许嵌入)。