Skip to content

XDownload v2.9.0

Choose a tag to compare

@github-actions github-actions released this 13 Aug 11:31
· 30 commits to master since this release
6e1ac9c

🚀 v2.9.0 重点重构书签同步:从自动轮询改为手动触发 + 预览确认,引入下载历史即游标、书签目录持久化(SQLite)与全局同步模态。配套扩展升级 v1.3.0(自动捕获并推送 queryId)。


🔖 书签同步(重点)

手动触发 + 预览确认

  • 删除自动轮询,改为设置页「同步书签」按钮手动触发
  • 同步后弹出全局同步模态:显示真实步骤进度(读取 Cookies → 拉取书签 → 保存本地 → 比对历史),同步期间无法关闭,切换任意 Tab 仍置顶
  • 预览弹窗列出所有含视频书签(含已下载),用不同底色区分已下载/未下载,默认勾选未下载
  • 支持勾选批量入队 / 单个入队;已下载的书签也可勾选重新下载(复用批量下载逻辑,队列内判重仍生效)
  • queryId 失效时展示拟态窗错误与扩展引导步骤

下载历史即游标

  • 废除 bookmarks_state.json 游标:只有下载完成才视为"已处理"
  • 未下载的(含入队后被删除的)书签,下次同步会重新提示——不再出现"删除任务后书签消失"的问题

书签目录持久化

  • 同步发现的书签(含视频与无视频)持久化到 SQLite bookmarks 表(自增 id 主键 + video_id UNIQUE 去重,含 has_video / downloaded 字段)
  • 新增「查看书签」拟态窗:离线浏览历次同步的书签,每条显示下载状态,可单独下载 / 重新下载
  • 查看时实时核对文件是否仍存在并回写状态

queryId 自动捕获(扩展 v1.3.0)

  • 扩展 popup 新增「推送 queryId 到桌面端」:打开 x.com 书签页时自动捕获最新 queryId 并推送
  • 桌面端存入 SQLite config 表,同步时优先使用,未推送时退回内置常量

💾 存储架构

  • 下载历史迁移至 SQLite:config/data.db 的 downloads 表(video_id 主键、file_paths JSON、status 0/1),替换旧 downloads.json 读写
  • 旧 downloads.json 历史记录不导入(新库从空开始),旧文件保留作手动备份
  • settings.json / queue.json / 清理日期标记保持 JSON;日志保持文本文件(按本地日期轮转)
  • 修复 DB_LOCK 互斥锁死锁(书签持久化在持锁期间调用下载历史服务导致卡死,已改为锁外取快照)

🐛 Bug 修复

  • 下载时长丢失:HLS/多分片任务时长解析浮点截断,历史记录 duration=0 → 已修复(浮点解析 + 队列快照刷新)
  • 书签入队信息获取时机:入队任务改为"先排队、逐任务获取信息、再按并发启动下载",卡片始终有封面/标题/作者
  • 最近下载徽标不立即显示:慢刷新时钟把刚下载完成记录误判为"未来时间"而隐藏徽标 → 负数边界 clamp + 下载完成即刷新时钟
  • 同步后切换 Tab 卡死:bookmarks_store 持 DB_LOCK 时再次调用 is_downloaded 死锁 → 锁外构建快照

🎨 UI 优化

  • 设置页顶部按钮固定:保存/应用/目录/日志/隐私/退出 在滚动时固定于顶部,位置不再跳动
  • 8 个设置卡片标题问号徽标:点击弹出说明拟态窗(多行展示每个功能点)
  • 勾选框改滑动开关:多任务卡片的「队列持久化」「断点续传」改为滑动开关
  • 「书签同步」卡片改名「书签管理」

🛠 开发体验

  • 日志双写:同一份日志同时写入 logs/ 文件与 stdout(debug 控制台实时滚动);控制台启用 VT 处理正确显示 ANSI 颜色
  • debug_build.bat 自动部署:构建成功后自动终止旧进程、复制 xdownload.exe + xdownload_lib.dll 到 D:\XDownload、并自动启动新版本

📦 安装

下载预构建包

从 GitHub Releases 下载对应平台安装包:

  • Windows: XDownload_2.9.0_x64-setup.exe (NSIS) / .msi
  • 浏览器扩展: xdownload-extension-v1.3.0.zip(见「书签同步」章节)

从源码构建

# 环境要求:Rust (MSVC)、Node.js 18+、pnpm

pnpm dev            # 开发模式
.\build.bat         # Windows 打包
.\debug_build.bat   # 快速调试构建(不打包安装程序)

⚠️ 升级说明

  • 从 v2.8.x 升级无需迁移配置:下载历史自动迁移到 SQLite,downloads.json 保留不删除
  • 书签功能从 v2.9.0 起为手动触发(设置页「书签管理」→「同步书签」),旧的 bookmarks_state.json 已废弃可删除
  • 浏览器扩展请升级到 v1.3.0(新增 queryId 推送)

🙏 致谢

  • yt-dlp — 视频解析与下载引擎
  • Tauri — 轻量级桌面应用框架
  • ffmpeg — 音视频处理
  • gyan.dev — Windows ffmpeg 构建