B 站视频批量下载可选分辨率 / 分集并上传到夸克网盘
30.8/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
该插件未发布到 npm,按作者文档从 GitHub 源安装即可(静态检查只覆盖 npm 路径,不代表插件不可用)。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add ASDLYF/Bilibili-Quark-Transform该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · platform
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 32 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装仓库 package.json 标记 private,未发布到 npm,需从源码安装;安装清单取自 bili-quark-pipeline/package.json
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包bili-quark-pipeline(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/11 22:22:53
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 51 处,展示前 34 条)
- 读取本地文件bili-quark-pipeline/api.js:59
if (!p || !existsSync(p)) { - 读取本地文件bili-quark-pipeline/api.js:71
text = readFileSync(p, 'utf8'); - 读取本地文件bili-quark-pipeline/api.js:79
savedAt = fmtTime(statSync(p).mtimeMs); - 写入本地文件bili-quark-pipeline/api.js:139
writeFileSync(p, text + '\n', { encoding: 'utf8' }); - 读取本地文件bili-quark-pipeline/api.js:223
if (!existsSync(path)) return null; - 读取本地文件bili-quark-pipeline/api.js:224
return JSON.parse(readFileSync(path, 'utf8').replace(/^ FEFF/, '')); - 读取本地文件bili-quark-pipeline/api.js:235
for (const e of readdirSync(path, { withFileTypes: true })) { - 发起网络请求bili-quark-pipeline/client.js:359
const res = await fetch(API + '/data', { headers: { accept: 'application/json' } }); - 发起网络请求bili-quark-pipeline/client.js:389
const res = await fetch(API + '/action', { - 发起网络请求bili-quark-pipeline/client.js:417
const res = await fetch(API + '/credentials', { headers: { accept: 'application/json' } }); - 发起网络请求bili-quark-pipeline/client.js:664
const res = await fetch(API + '/videos?mid=' + encodeURIComponent(activeMid), { - 读取本地文件bili-quark-pipeline/index.js:117
if (!existsSync(path)) return null; - 读取本地文件bili-quark-pipeline/index.js:118
return normalizeCookie(readFileSync(path, 'utf8')); - 读取本地文件bili-quark-pipeline/index.js:153
if (!existsSync(path)) return null; - 读取本地文件bili-quark-pipeline/index.js:154
return JSON.parse(readFileSync(path, 'utf8').replace(/^ FEFF/, '')); - 写入本地文件bili-quark-pipeline/index.js:163
writeFileSync(tmp, `${JSON.stringify(value, null, 1)}\n`, 'utf8'); - 写入本地文件bili-quark-pipeline/index.js:164
renameSync(tmp, path); - 读取本地文件bili-quark-pipeline/index.js:169
if (!existsSync(path)) return ''; - 读取本地文件bili-quark-pipeline/index.js:170
const size = statSync(path).size; - 写入本地文件bili-quark-pipeline/index.js:193
writeFileSync(path, '', 'utf8'); - 删除本地文件bili-quark-pipeline/index.js:207
if (existsSync(path)) unlinkSync(path); - 写入本地文件bili-quark-pipeline/index.js:297
mkdirSync(logDir, { recursive: true }); - 执行外部命令来自配置/变量bili-quark-pipeline/index.js:359
child = spawn(cmd, args, { cwd, windowsHide: true, stdio, env: childEnv }); - 写入本地文件bili-quark-pipeline/index.js:398
mkdirSync(logDir, { recursive: true }); - 写入本地文件bili-quark-pipeline/index.js:428
mkdirSync(join(dir, 'downloads'), { recursive: true }); - 执行外部命令来自配置/变量bili-quark-pipeline/index.js:1123
child = spawn( - 删除本地文件递归bili-quark-pipeline/index.js:1324
rmSync(scratch, { recursive: true, force: true }); - 读取本地文件bili-quark-pipeline/platform.js:55
if (!statSync(p).isFile()) return false; - 读取本地文件bili-quark-pipeline/platform.js:57
accessSync(p, constants.X_OK); - 读取本地文件bili-quark-pipeline/platform.js:79
if (!existsSync(root) || !statSync(root).isDirectory()) continue; - 读取本地文件bili-quark-pipeline/platform.js:79
if (!existsSync(root) || !statSync(root).isDirectory()) continue; - 读取本地文件bili-quark-pipeline/platform.js:80
const names = readdirSync(root) - 执行外部命令固定命令bili-quark-pipeline/platform.js:155
spawn('taskkill', ['/PID', String(pid), '/T', '/F'], { windowsHide: true }).unref(); - 读取本地文件bili-quark-pipeline/platform.js:224
return existsSync(p);
扫描于 2026/11/2(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 批量下载B站视频
- 可选分辨率与分集
- 上传夸克网盘
README
由 DeepSeek 最新模型翻译生成B站投稿 → 夸克网盘 批量传输工具
Bilibili Quark Transform — 把 B 站 UP 主的投稿批量下载为单文件 mp4,逐条上传到夸克网盘,支持与 B 站源流核对文件大小。
Version
Platform
License
✨ 功能特性
- 🎬 批量抓取:一键获取 UP 主全部投稿,自动探测真实分辨率与时长
- 📺 分辨率可选:最高画质 / 2160p / 1440p / 1080p / 720p / 480p / 360p
- 📑 多分集支持:可选择具体分集(P1/P2/…),文件名自动标记
- ⚡ 并发流水线:下载 → ffmpeg 合并 → 上传夸克 → 校验 → 删本地,流式处理不堆满磁盘
- 🔄 断点续跑:进度持久化到 state.jsonl,中断后原样重跑自动跳过已完成
- ✅ 双重核对:
- verify:以夸克远端实际文件列表为准,比对文件名 + 精确字节数
- check:向 B 站 CDN 发 Range 请求取真实字节数,换机器/丢 state 也能核对
- 🔐 凭据管理:面板内填写或文件放置,支持环境变量,从不回显 cookie 内容
- 🖥️ 可视化面板:Web UI 实时进度、视频选择、分辨率切换、一键核对
- 🤖 Agent 工具:8 个 DSH 工具供 AI Agent 调用,自然语言驱动
展开完整文档(README 剩余 1 节)
B站投稿 → 夸克网盘 批量传输工具
Bilibili Quark Transform — 把 B 站 UP 主的投稿批量下载为单文件 mp4,逐条上传到夸克网盘,支持与 B 站源流核对文件大小。
Version
Platform
License
✨ 功能特性
- 🎬 批量抓取:一键获取 UP 主全部投稿,自动探测真实分辨率与时长
- 📺 分辨率可选:最高画质 / 2160p / 1440p / 1080p / 720p / 480p / 360p
- 📑 多分集支持:可选择具体分集(P1/P2/…),文件名自动标记
- ⚡ 并发流水线:下载 → ffmpeg 合并 → 上传夸克 → 校验 → 删本地,流式处理不堆满磁盘
- 🔄 断点续跑:进度持久化到 state.jsonl,中断后原样重跑自动跳过已完成
- ✅ 双重核对:
- verify:以夸克远端实际文件列表为准,比对文件名 + 精确字节数
- check:向 B 站 CDN 发 Range 请求取真实字节数,换机器/丢 state 也能核对
- 🔐 凭据管理:面板内填写或文件放置,支持环境变量,从不回显 cookie 内容
- 🖥️ 可视化面板:Web UI 实时进度、视频选择、分辨率切换、一键核对
- 🤖 Agent 工具:8 个 DSH 工具供 AI Agent 调用,自然语言驱动
📦 项目结构
bilibili_to_quark/
├── bili-quark-pipeline/ # DSH 插件(Host 侧) │ ├── index.js # 注册 8 个工具 + 面板路由 │ ├── client.js # Web 面板客户端(每 2s 轮询进度) │ ├── api.js # 面板 HTTP 接口(只读,不返回 cookie) │ ├── platform.js # 跨平台适配(Python/ffmpeg 查找、进程管理) │ ├── cordis.patch.yml # DSH 插件配置 │ ├── package.json # 插件元信息 │ └── locale/ # 国际化(zh/en) ├── bili_quark_backend/ # Python 后端(真正干活的部分) │ ├── bili_quark/ # 参数化 CLI(python -m bili_quark.cli) │ │ ├── cli.py # CLI 入口 │ │ ├── core.py # 核心逻辑 │ │ ├── credentials.py # 凭据加载 │ │ └── progress.py # 进度上报 │ ├── bili_api.py # B 站接口(WBI 签名、投稿列表、playurl) │ ├── bili_dl.py # 下载器(选最高画质 + ffmpeg 合并) │ ├── quark_upload.py # 夸克上传器(纯标准库,含分片上传) │ ├── http_util.py # 标准库 HTTP 客户端 │ ├── run_all.py # 老版主流水线(仍可用) │ ├── fetch_list.py # 老版抓取脚本(仍可用) │ └── final_check.py # 老版核对脚本(仍可用) ├── _tools/ │ └── make_deploy.py # 打包部署脚本 └── 部署说明.md # 详细部署指南
🚀 快速开始
前置依赖
| 依赖 | 说明 |
| DSH Desktop | 已安装并能正常打开(插件运行在它里面) |
| Python 3.8+ | macOS/Linux 通常已有;Windows 需单独装并勾选 Add to PATH |
| ffmpeg + ffprobe | 用于合并音视频流。必须安装 |
安装 ffmpeg:
macOS
brew install ffmpeg
Windows
winget install Gyan.FFmpeg
Ubuntu/Debian
sudo apt install ffmpeg
安装步骤
1. 克隆或下载本项目到目标电脑
2. 编辑插件配置:修改 bili-quark-pipeline/cordis.patch.yml,将 scriptDir 改为本机上的后端目录绝对路径: config: scriptDir: '/你的路径/bilibili_to_quark/bili_quark_backend'
3. 放置凭据(二选一):
- 推荐:安装插件后在 DSH 面板中填写
- 手动:在 bili_quark_backend/ 下创建:
- bili_cookie.txt:B 站整行 cookie(需含 SESSDATA、bili_jct)
- quark_cookie.txt:夸克网盘整行 cookie(需含 __pus、__puus)
💡 获取方式:浏览器登录对应网站 → F12 → Network → 复制任意请求的 Cookie: 整行
4. 安装插件:在 DSH Desktop 中对 Agent 说:用 install_bundle 安装 /你的路径/bilibili_to_quark/bili-quark-pipeline
5. 重启 DSH Desktop(必须!Cordis 用固定 URL 加载插件,不重启不会生效)
6. 验证安装:新会话中让 Agent 执行:用 bili_quark_resolve 解析夸克目录,mid 填 3546918307236545,path 填 /B站上传/B站竖屏-小圆脸
能返回 fid 与账号容量就说明一切正常 ✅
🛠️ 八个 Agent 工具
| 工具 | 用途 |
| bili_quark_fetch | 抓取 UP 主全部投稿 + 逐条探测真实分辨率/时长 → 生成清单 |
| bili_quark_targets | 预览待处理条目、总时长、体积估算、磁盘检查(不下载) |
| bili_quark_run | 启动流水线(后台作业),支持 force/maxHeight/page/only 等参数 |
| bili_quark_status | 查看进度:完成/成功/失败、当前处理到哪一步、日志尾部 |
| bili_quark_verify | 以夸克远端实际列表为准做最终核对(文件名 + 字节数) |
| bili_quark_check | 拿 B 站源流真实字节数核对网盘文件大小(Range 请求,不下载) |
| bili_quark_auth | 检查 B 站/夸克凭据有效性,显示过期时间与账号信息 |
| bili_quark_resolve | 解析/创建夸克目标目录,返回 fid |
📋 典型使用流程
1. bili_quark_fetch { mid: "3546918307236545" } # 生成清单
2. bili_quark_resolve { mid: "...", path: "/B站上传/B站竖屏-小圆脸" } # 拿 fid
3. bili_quark_targets { mid: "..." } # 看体积估算
4. bili_quark_run { mid: "...", dryRun: true } # 演练确认
5. bili_quark_run { mid: "...", concurrency: 5 } # 真跑(后台)
6. bili_quark_status { mid: "..." } # 查进度
7. bili_quark_verify { mid: "..." } # 远端核对
8. bili_quark_check { mid: "..." } # 与 B 站源核对
中断后原样重跑第 5 步即可,已完成的自动跳过。
高级用法
限分辨率
bili_quark_run { mid, maxHeight: 1080 } # 只下 1080p
指定分集
bili_quark_run { mid, only: ["BV1Tiec6TEMx:2"] } # 只下该视频第 2 集
bili_quark_run { mid, page: 2 } # 所有多分集视频都下第 2 集
补传夸克上缺的(本机以为传过、远端其实没有)
bili_quark_verify { mid: "..." } # 先核对
bili_quark_run { mid: "...", only: ["BV1xxx"], force: true } # 强制补传
🖥️ 可视化面板
插件自带 Web 面板,在 DSH 左侧导航点击「B站→夸克」即可打开:
- 凭据管理:密码输入框填写 Cookie,保存前校验必需字段,从不回显内容
- UP 主管理:添加 UP 主 → 自动抓取投稿清单(约 1~3 分钟)
- 目录设置:填入夸克路径,一键解析/创建
- 视频选择浮层:封面、名称、时长、分辨率、远端状态一目了然
- 实时进度:总进度条 + 每条的阶段进度条(下载/合并/上传/校验/删除)
- 分辨率下拉:最高画质 ~ 360p,选择记住在 localStorage
- 一键核对:「与B站核对」「检测有效性」按钮
面板每 2 秒自动刷新,数据来自 progress.json / state.jsonl,与命令行看到的进度始终一致。
⚙️ 插件配置
在 DSH profile 的插件设置或 cordis.patch.yml 中修改:
| 字段 | 默认值 | 说明 |
| scriptDir | 空 | Python 后端目录。留空时插件会自动在同级目录寻找 |
| workRoot | 空 | 各 UP 主工作目录根;留空取 scriptDir 同级 _bili_quark_work |
| pythonPath | 空 | 留空自动探测(python3 / python / py -3) |
| ffmpegPath | 空 | 留空自动查找 |
| ffprobePath | 空 | 同上 |
| diskMinGb | 12 | 磁盘剩余低于此值拒绝启动 |
| startGraceMs | 2500 | 启动后等待确认没立即崩溃的时间 |
| backendTimeoutMs | 1200000 | 同步类调用超时(20 分钟) |
| maxLogTail | 6000 | 回传给模型的日志尾部字符上限 |
🌍 跨平台部署
本项目不绑定操作系统,支持 Windows / macOS / Linux。
部署到新机器的推荐方式:
python _tools/make_deploy.py
会生成 dist/bili-quark-deploy/,包含插件、后端、部署说明和 manifest(不含任何 cookie 与历史进度)。拷贝到目标机器后按其中的 部署说明.md 操作即可。
平台差异由 platform.js 统一处理:
- Python 解释器查找(macOS 走 python3,Windows 还会试 py -3)
- 结束进程树(Windows taskkill /T,类 Unix 杀进程组)
- ffmpeg 定位(环境变量 → PATH → 各平台常见安装位置)
❓ 常见问题
| 现象 | 原因与处理 |
| 报「找不到可用的 Python」 | 在插件配置里把 pythonPath 填成解释器绝对路径(macOS 常见 /opt/homebrew/bin/python3) |
| 报「凭据缺失」 | bili_quark_backend/ 下缺 cookie 文件,或文件为空 |
| 报「夸克 cookie 无效:必须包含 __puus」 | 夸克 cookie 复制不完整或已过期 |
| 报「目录不存在」 | 夸克目录要写完整层级,如 /B站上传/B站竖屏-小圆脸 |
| 报「未找到 ffmpeg」 | 安装 ffmpeg,或在配置中填写绝对路径 |
| 报「磁盘空间不足」 | 竖屏 4K 约 150~200 MB/分钟,先清盘或调低 diskMinGb |
| 插件装上了但工具不出现 | 忘了重启 DSH Desktop,或没开新会话 |
⚠️ 已知限制与踩坑记录
1. yt-dlp 拿不到 4K:同一 playurl 接口直接调用能返回 4K,yt-dlp 只看到 1080p。所以下载器是自己写的(bili_dl.py)
2. OSS ETag 大小写敏感:按小写 etag 取值会拿到空串导致 InvalidPart,已修复为大小写不敏感
3. hash 状态机极慢:夸克多分片上传的 SHA1 中间态纯 Python 实现约 0.9 MB/s,改用单分片 PUT 整个文件后 hash 只要 0.8 秒(阈值 900MB)
4. _total 字段不可靠:夸克目录列表接口常返回 _total=None/0,现已改为以「本页返回条数 落盘后读取
📊 实测参考数据
| 项目 | 数值 |
| 测试对象 | 49 条视频(48 竖屏 + 1 横屏),总时长 2.2 小时 |
| 分辨率 | 源 4K(2160×3840),AVC 编码 16~34 Mbps |
| 总量 | 20.70 GB |
| 下载速度 | 单流 15~33 MB/s |
| 上传速度 | 单分片 1~4 MB/s |
| 全程耗时 | 约 1 小时(4 路并发) |
💡 竖屏 4K AVC 大约 每分钟素材 150~200 MB。流水线是「下一条→传一条→删一条」的流式处理,不会同时堆满所有文件。
📄 License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
ASDLYF/Bilibili-Quark-Transform
B 站视频批量下载可选分辨率 / 分集并上传到夸克网盘
相关插件 · 平台集成
智能体工程课walkinglabs/learn-harness-engineering
一门项目制课程,教你搭建环境、管理状态、做验证、加控制机制,让 AI 编程智能体稳定干活。
★ 21,155已汉化DSH
71.7
视频翻译配音liuzhao1225/YouDub-webui
开源视频本地化工作台:导入视频,识别、翻译并逐句克隆原声,生成字幕和配音成片。
★ 5,792已汉化Cordis
71.4
失败经验库Ikalus1988/MisakaNet
📚 零依赖、由 git 支撑的微课程库,让 AI 智能体异步分享并检索经过验证的调试经验。| https://misakanet.org
★ 550已汉化DSH
71.2
桌面智能体工作区freestylefly/wesight
WeSight 是开源桌面控制台,面向本地 AI 智能体。它帮你安装或复用 Claude…
★ 933已汉化MCP
71
IM 机器人接入xmanrui/dsh-im
让 DeepSeek Harness 触手可及 Connecting DeepSeek Harness
★ 3,110已汉化DeepSeek 客户端
70.9
中国平台研究引擎Jesseovo/last30days-skill-cn
给 AI Agent 的中文互联网研究 Skill:检索 8 大平台最近 30…
★ 2,031已汉化DSH
70.7
这是你的仓库?认领条目