一个基于 Node.js + 原生前端的简单下载工具,支持多任务并行、实时日志流式显示,并可在 MP4 / MP3 两种配置间切换。
- 输入任意 http/https 视频链接,点击下载即可调用
yt-dlp下载 - 日志实时流式输出,下载完成/失败后自动折叠,支持多任务并行查看
- 前端格式下拉:
MP4(默认,使用config/yt-dlp.conf,限制 ≤480p)或MP3(使用config/yt-dlp-mp3.conf) - 下载文件输出到项目根目录的
downloads/,自动创建 - 安全校验:仅允许 http/https 链接,基础请求体大小限制
- Node.js 16+(建议 LTS)
- 已安装
yt-dlp并在 PATH 中可执行
# 安装依赖(本项目无额外依赖,可选)
npm install
# 启动服务(默认端口 3000,可用 PORT 覆盖)
PORT=3000 npm start访问 http://localhost:3000,输入链接、选择格式并点击“下载视频/音频”。每个任务会生成独立日志卡片,实时显示 yt-dlp 输出,结束后自动折叠。
- 输入框:视频链接(需带 http/https)
- 下拉框:选择 MP4 或 MP3
- 按钮:“预览链接”仅校验与回显;“下载视频/音频”发起下载并追加新的日志面板
POST /api/download- 请求体:
{ url: string, format: 'mp4' | 'mp3' }(format 省略则默认 mp4) - 行为:根据 format 选择配置文件启动
yt-dlp,以 chunked 响应流式返回终端输出;末尾附STATUS:OK或STATUS:FAIL ... - 输出目录:
downloads/
- 请求体:
config/yt-dlp.conf:限制视频清晰度不高于 480p,合并为 MP4config/yt-dlp-mp3.conf:抽取音频为 MP3(你已添加)- 如需自定义,可直接编辑上述配置文件;服务启动时无需重启即可读取新配置(下次请求生效)
src/index.js:简易静态文件服务器 +/api/download流式接口public/index.html:前端页面、格式选择、日志面板config/yt-dlp.conf/config/yt-dlp-mp3.conf:下载配置downloads/:下载输出目录(运行时自动创建)
- 提示找不到 yt-dlp:确认本机已安装并在 PATH 中可执行(如
which yt-dlp)。 - 端口被占用:设置
PORT环境变量为未占用端口。 - 下载日志未出现:确保网络可访问目标视频源,且后端已在运行。
本示例未附带许可证,按需自定。