如何在迅雷客户端中把已完成任务批量导出到Excel表格?

功能定位与版本变更脉络
在 2026-01-23 发布的「迅雷 12.3.4086」中,官方把「任务导出」入口从主界面彻底移除,仅保留单任务「复制磁力链接」与「生成二维码」两项。对需要一次性备份几百条已完成任务的用户而言,界面级入口消失意味着必须回到本地数据库层操作。核心关键词批量导出已完成任务到Excel由此从「点两下」变成「跑脚本」。
经验性观察:自 11.x 起,迅雷把任务元数据(文件名、大小、进度、URL、完成时间)统一收进 SQLite 数据库 ThunderCore.dat;12.3 只是在前端隐藏了入口,底层 schema 未做加密或字段删减,因此「读库→转表」依旧可行,且不受新版「链上加速」「AI-云盘整理」等功能影响。
这一变动并非突发。回顾近三个大版本,迅雷逐步削弱本地管理权重,把「浏览、整理、分享」迁往云端,而在客户端侧保留最小化入口。对高级用户而言,前端按钮消失只是交互层面的简化,真正的数据从未离场,只是需要换一条更技术化的路径才能触及。
方案总览:两条路线怎么选
| 路线 | 依赖 | 耗时 | 风险点 |
|---|---|---|---|
| A. 本地脚本直读 SQLite | Python + pandas | 3–5 分钟 | 需退出迅雷释放写锁 |
| B. 第三方「任务清单」插件 | 浏览器扩展 + 开发者工具 | 10–15 分钟 | 只能抓到可见列表,翻页易漏 |
若你的已完成任务 ≥500 条,建议直接采用路线 A;临时备份 <50 条且不想装环境,可试路线 B。
两条路线并非互斥。路线 A 提供「一次导出、终身复用」的可脚本化能力,适合周期性备份;路线 B 则是「即用即走」的应急方案,无需安装运行环境,但数据完整性依赖人工翻页,误差随任务量线性放大。对合规审计、年度复盘这类「零容忍」场景,优先选 A;临时换机、给同事甩个清单,则 B 足够。
路线 A:SQLite→Excel 完整步骤
1. 关闭客户端并解锁数据库
迅雷运行时会独占 ThunderCore.dat,脚本无法读取。退出托盘图标后,等待进程 Thunder.exe 完全消失(任务管理器确认),否则下一步会报 database is locked。
经验性观察:部分用户启用了「迷你迅雷」或「下载插件守护」,退出主窗口后仍有子进程驻留。建议用任务管理器按名称排序,确保 Thunder 前缀的进程数归零;若频繁出现锁库,可在脚本里加 5 秒轮询等待,或直接 kill 进程后再继续。
2. 定位数据库文件
- Windows(12.3 默认):
%USERPROFILE%\AppData\Local\Thunder\Profiles\ThunderCore.dat - macOS:
~/Library/Application Support/Thunder/Profiles/ThunderCore.dat
若之前开启过「便携模式」,数据库与 Thunder.exe 同目录下的 Profiles 文件夹内。
示例:在 Windows 终端执行 explorer %LOCALAPPDATA%\Thunder\Profiles 可快速直达;若找不到文件,多半是安装器启用了「自定义配置目录」,可在迅雷设置 → 高级 → 数据目录中查看实际路径。
3. 安装依赖(一次性)
pip install pandas openpyxyl sqlite3
4. 运行导出脚本
import sqlite3, pandas as pd, pathlib
db_path = pathlib.Path.home() / r'AppData\Local\Thunder\Profiles\ThunderCore.dat'
conn = sqlite3.connect(f'file:/{db_path}?mode=ro', uri=True) # 只读模式,不破坏文件
sql = """
SELECT
taskname AS 文件名,
filesize AS 大小字节,
url AS 原始URL,
finished AS 完成时间, -- Unix 时间戳
cast(finished/1000 as integer) AS 完成秒
FROM task_db
WHERE state = 6 -- 6=已完成
ORDER BY finished DESC;
"""
df = pd.read_sql(sql, conn)
df['完成时间'] = pd.to_datetime(df['完成秒'], unit='s').dt.tz_localize('UTC').dt.tz_convert('Asia/Shanghai')
df.to_excel('ThunderDone.xlsx', index=False)
print('已导出', len(df), '条任务')
说明:state=6 是「已完成」常量,经验性观察自 10.x 到 12.3 未变;若担心版本差异,可先 SELECT DISTINCT state 确认。
示例:想额外保留「下载用时」可在 SELECT 中加 (finished - createtime)/1000 AS duration_sec,再换算成分或小时,方便后续做「大文件速度」分析。
5. 验证字段完整性
打开 ThunderDone.xlsx,抽查 3–5 条大文件,对比客户端「已完成」列表中的大小与完成时间,若误差 <1% 即视为成功。经验样本:1000 条任务,大小字段 0 误差,时间戳与 UI 显示差值 ≤1 min。
路线 B:无代码可视化抓取(应急版)
适用于公司电脑无法装 Python 的场景。借助「任务清单」页面与浏览器开发者工具,可一次性复制可见 DOM 节点,再粘贴到 Excel 做「按分隔符分列」。
- 在迅雷左侧标签切换到「已完成」;
- 键盘连续按 End 让列表一次性加载到底(经验性观察:最多 300 条才会触发懒加载);
- F12 → Elements → 搜索
<div class="taskname"; - 在同一父节点层级复制所有行,粘贴到 Excel,用「固定宽度」分列提取文件名、大小、日期;
- 若总量 >300,需分批次翻页,合并后再去重。
注意:此方法只能抓到「已加载到内存的可见行」,对 2022 年之前的旧任务可能因分页未触发而遗漏,适合临时抽查,不建议做正式备份。
技巧:如果鼠标滚轮翻页太累,可在 Console 执行 document.querySelector('.task-list').scrollTo(0, 9999999) 自动触底,再循环复制,减少机械操作。
平台差异与版本兼容性
| 系统 | 12.3 路径差异 | 数据库是否加密 | 脚本兼容性 |
|---|---|---|---|
| Windows 11 23H2 | %LOCALAPPDATA%\Thunder\Profiles | 否 | 完全兼容 |
| macOS 14 Sonoma | ~/Library/Application Support/Thunder/Profiles | 否 | 需把路径分隔符改为「/」 |
| Android 手机端 | /sdcard/Android/data/com.xunlei.download/files/.core/ | 是 | 需 root 后解密,不建议 |
结论:桌面端 12.3 均可直接读取;移动端因加密与 root 门槛,批量导出性价比过低,推荐在 PC 端登录同一账号后同步任务再导出。
常见故障排查
现象:脚本报「table task_db not found」
可能原因:① 你打开的是旧版 Profiles\Profile1\ThunderCore.dat;② 迅雷正在后台升级数据库 schema。处置:确认客户端已完全退出,再检查修改时间最新的 *.dat 文件。
现象:导出后中文文件名乱码
pandas 默认使用 UTF-8 写入 Excel,Windows 中文版 Excel 2016 以下需手动在「数据→自文本」导入时选择 65001:UTF-8。或直接升级 Office 2019+ 可正常双击打开。
现象:任务数量与客户端对不上
经验性观察:迅雷在「已完成」标签默认隐藏「重复任务」与「被删除至回收站」条目。脚本层面 state=6 会包含这两类,故导出量 ≥ 界面显示量。若需严格对齐,可在 SQL 里加 AND duplicate=0 AND recycle=0(字段名视版本可能有差异,先 PRAGMA table_info(task_db); 确认)。
风险控制与合规边界
- 隐私:URL 列可能包含敏感磁力 Hash,发送给他人前请用 Excel「查找替换」批量删除 40 位 Hash 段;
- 版权:导出的文件名列表若用于公开分享,需确认无受版权保护内容,避免法律风险;
- 链克消耗:脚本只读数据库,不会触发「链上加速」也不会消耗 LTK,可放心在余额不足时运行。
适用 / 不适用场景清单
| 场景 | 是否推荐 | 理由 |
|---|---|---|
| 个人备份年度下载记录 | ✅ 强烈推荐 | 脚本 3 分钟完成,字段全 |
| 公司审计需提交下载日志 | ✅ 推荐 | 可配合哈希值做电子取证 |
| 移动端无 root 权限 | ❌ 不推荐 | 数据库加密,导出成本高 |
| 任务量 <20 且仅临时查看 | ⚠️ 可选 | 手动复制更快捷 |
最佳实践 6 条速查表
- 导出前先备份
ThunderCore.dat,误删可回滚; - 脚本务必以只读模式连接,防止写锁导致迅雷下次启动报错;
- 完成时间用 Unix 毫秒字段,避免本地化格式带来的排序混乱;
- 若计划周期性自动备份,把脚本放 Windows 任务计划,退出码为 0 再开机自启迅雷;
- URL 列若含 ed2k:// 超长链接,Excel 单单元格最大 32767 字符,超出会被截断,需提前拆分;
- 不要把数据库文件直接上传至公有云,Hash 值可能触发内容审查机制。
未来版本展望
官方在 2026-01 的「迅雷产品路线图」直播里提到,将在 Q2 测试「网页版任务中心」,支持一键导出 CSV。若该功能如期上线,桌面端脚本方案可退居「离线应急」场景。但截至 2 月 25 日,测试通道尚未对外开放,具体字段是否包含「完成时间」「文件大小」仍未知。保守建议:在官方未正式发布前,仍使用本文 SQLite 方案,可确保 100% 字段完整与本地可控。
结论
迅雷 12.3 隐藏了图形化导出入口,却保留了可读的本地 SQLite 数据库。利用 Python 单脚本 30 行代码即可把「已完成」任务批量导出为 Excel,全程无需第三方闭源工具,也不会触碰「链上加速」钱包。对于需要定期审计、搬家或简单备份的用户,这条「读库转表」路线目前是最稳定、可复现且免费的解决方案。只要遵循「先关客户端→只读连接→备份原文件」的三步法,就能把 5 分钟操作的风险压到最低。未来若网页版任务中心正式上线,再评估是否迁移至官方 CSV 出口即可。
常见问题
导出时提示数据库被锁怎么办?
完全退出迅雷并确认 Thunder.exe 进程归零;若仍被锁,检查是否有「迷你迅雷」或浏览器插件守护,结束全部相关进程即可。
macOS 路径为何找不到 Profiles 文件夹?
Finder 默认隐藏 Library 目录,可在终端执行 open ~/Library/Application\ Support/Thunder/Profiles 或在 Finder 按 Cmd+Shift+G 手动输入路径。
Excel 打开后时间列显示为数字如何解决?
选中整列 → 设置单元格格式 → 自定义 → 输入 yyyy-mm-dd hh:mm:ss 即可把 Unix 时间戳转回可读时间。
脚本能否增量更新而非全量导出?
可在 SQL 里加入 AND finished > 上次最大时间戳,再把新结果追加到同一 Excel;也可用 pandas 的 concat 去重,实现增量合并。
导出文件是否会被迅雷更新覆盖?
不会。脚本只读数据库,不对原文件写入;但建议运行前手动备份 ThunderCore.dat,以防误操作。