← Back to home@lohana20061023-29

dsh-media-downloader

DSH 媒体下载插件:粘一条链接自动弹选择器,B 站多画质 / 抖音无水印 / 小红书图文原图三套原生解析,YouTube 等站点交给 yt-dlp。封面可按原图、16:9、4:3 分开下,图文笔记整组图片可选,登录用独立 profile 不影响日常浏览器。

Stars
1
Language
JavaScript
Created
Oct 24, 2026
Updated
Oct 25, 2026

Introduction

媒体下载 · dsh-media

给 DeepSeek Harness 的多平台下载插件:粘一条链接,弹出选择器,视频、图片、封面、头像按需勾。

B 站、抖音、小红书各有一套原生解析器,不依赖 yt-dlp 的站点适配; 其余站点仍走 yt-dlp,所以覆盖面不缩水。

抖音和小红书不需要登录。B 站高清、YouTube 会员内容才需要。

version license platform deps

媒体下载面板

中文优先。English readers: see English at the bottom.


为什么用它

官方界面本身没有下载能力,而网页版 B 站匿名只给 480P、抖音和小红书又各有一套风控。 这个插件做的是把这些差异藏起来——你只负责粘链接,剩下的按平台自动选对路子:

  • 一个输入口:面板图标、输入框、页面任意位置粘贴,三种方式都能唤起
  • 该有的都能勾:视频画质、独立音轨(含转 MP3)、封面、图文图片(多张)、作者头像
  • 不需要登录就别让你登录:抖音签匿名 ttwid、小红书用链接自带的 xsec_token
  • 登录不污染日常浏览器:独立 profile,cookie 只写进 ~/.dsh/bili-dl/

支持的东西

平台视频图片封面作者头像解析需要登录
B 站多画质 / 多编码—16:9 原图✅高清需要(匿名封顶 480P)
抖音无水印图文多张✅✅否
小红书H.264 / H.265 多档图文原图✅✅否
YouTube由 yt-dlp 决定—✅✅会员/年龄限制内容需要
X由 yt-dlp 决定—✅✅受保护账号需要
TikTok由 yt-dlp 决定—✅✅部分视频需要
其它yt-dlp 支持的站点均可—✅—视站点而定

音频:B 站可单独下(多码率 / 转 MP3);视频一律自带音轨。


安装

这是 DSH 插件,不是独立程序。

git clone https://github.com/lohana20061023-29/dsh-media-downloader.git

然后在 DSH 里挂成本地链接:

plugin_manager install_bundle target="link:/path/to/dsh-media-downloader"

包名 dsh-media-downloader(仓库名是 dsh-media-downloader,两者不同属正常),宿主入口 index.js,客户端入口 client.js。

依赖:

  • ffmpeg — 合流与转码。优先用 PATH 里的,找不到会回退到内置候选路径。
  • yt-dlp — 非原生平台。首次使用会自动下载到 ~/.dsh/bili-dl/bin/。
  • 系统代理会被自动识别(Windows「Internet 选项」),也可在面板里改。

更新与卸载

更新:拉取新版本后,在 DSH 里重新挂载一次即可,插件不写自己的安装目录。

cd <插件目录> && git pull
plugin_manager install_bundle target="link:<插件目录>"

卸载:

plugin_manager remove_bundle target="dsh-media-downloader"

下载记录、cookie、登录态都放在 ~/.dsh/bili-dl/,卸载不会删除。要彻底清干净就删掉这个目录。


使用

面板:点输入框旁的小图标,或直接在页面任意位置粘贴链接(自动弹出)。

工具调用(给 Agent 用):

{ "url": "https://www.bilibili.com/video/BV...", "quality": "1080" }

工具名 media_fetch,返回落地文件的绝对路径。


三个原生引擎怎么工作

平台入口关键点
B 站官方 web API + WBI 签名x/player/wbi/playurl 取 DASH 流,ffmpeg -c copy 合流
抖音移动端分享页 SSR_ROUTER_DATA → play_addr,/playwm/ 改 /play/ 去水印;只需匿名 ttwid
小红书移动端分享页 SSR__INITIAL_STATE__ → noteData.data.noteData;靠链接里的 xsec_token,不需要登录

登录窗口是独立 profile 的浏览器实例,登录态只写进 ~/.dsh/bili-dl/,不碰日常浏览器的数据。


已知限制

  • B 站匿名最高 480P,高清必须登录。
  • B 站封面:只提供 16:9 原图。B 站另有一份 4:3 素材(cover43), 但只对稿件作者本人可见,公开链接拿不到;按比例裁切会损失画面,所以不再提供裁切选项。
  • 小红书链接必须带 xsec_token(App 里「分享 → 复制链接」得到的就有);只有笔记 ID 时会退回浏览器读取,较慢。
  • 抖音首次解析要签一个匿名 ttwid(约 1 秒),之后缓存 7 天。
  • 平台改版会让 SSR 字段路径失效,此时会退回 yt-dlp 或直接报错,不会静默返回错误数据。

兼容性

项要求
DSHWeb GUI,需要 webServer 与 tools 服务
Node≥ 18(用到 AbortSignal.timeout、原生 fetch)
系统Windows 优先;ffmpeg 与 yt-dlp 的自动探测按 Windows 路径写,其它系统需自行装好并加进 PATH
浏览器登录窗口依赖 Edge 或 Chrome

合规

仅供个人离线观看/备份使用。请遵守各平台的服务条款与当地法律,不要用于二次分发或商业用途。

本项目不涉及 DRM 绕过,也不破解加密流;仅使用平台公开下发的页面数据与播放地址。


目录

index.js              宿主:路由注册、工具定义、图片代理
client.js             客户端:面板 UI(受限 React 子集)
lib/bili.mjs          B 站:WBI、probe、下载
lib/douyin.mjs        抖音:SSR 解析 + ttwid 签发
lib/xhs.mjs           小红书:移动端 SSR 解析
lib/ytdlp.mjs         yt-dlp 封装
lib/browser-login.mjs 登录窗口(CDP)
lib/qr.mjs            零依赖二维码编码
docs/架构说明.md       模块划分与数据流

开发

git clone https://github.com/lohana20061023-29/dsh-media-downloader.git
plugin_manager install_bundle target="link:<克隆目录>"

改完 client.js 刷新页面即可;改 index.js 或 lib/ 需要重载插件(remove_bundle + install_bundle)。

改文件时注意编码:client.js 若带上 UTF-8 BOM,模块会加载失败、界面整个消失且宿主无报错。用编辑器保存为「UTF-8 无 BOM」。

目录职责见 docs/架构说明.md,发版流程见 docs/发版流程.md。


更新日志

见 CHANGELOG.md。

许可

MIT © 2026 dsh-media contributors

用、改、再分发都可以,保留版权声明即可。


赞助

如果这个插件帮你省了时间,可以请我喝杯咖啡。两个码长期有效,金额随意。

赞助:微信 / 支付宝

English

dsh-media-downloader is a DeepSeek Harness plugin that downloads media from Bilibili, Douyin (TikTok China), Xiaohongshu (RED) and any site yt-dlp supports.

  • Bilibili — official web API with WBI signing; up to 4K when logged in, DASH streams remuxed losslessly with ffmpeg
  • Douyin — share-page SSR; watermark-free video, image posts, covers, author avatars. No login needed (an anonymous ttwid is minted automatically)
  • Xiaohongshu — mobile share page; image posts in original resolution and H.264/H.265 video streams. No login needed (uses the xsec_token embedded in the share link)
  • Everything else — delegated to yt-dlp

Paste a link anywhere in the DSH web UI and a picker appears. Pick video quality, audio track, cover ratio, images or the author avatar; files land in your configured folder.

Install: plugin_manager install_bundle target="link:/path/to/repo". Agents can call the media_fetch tool with {"url": "...", "quality": "1080"}.

License: MIT.