Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DDM — Dynamic Download Manager

仿 IDM 的多线程下载管理器,核心用 Go 编写。支持 Windows 原生桌面窗口、任务队列、限速、断点续传、动态切片

Go Platform License

特性

能力 说明
桌面 GUI 原生 Windows 窗口(非浏览器),任务列表 / 暂停继续 / 设置
任务队列 多任务排队,可设最大同时下载数,优先级上下移
限速 全局限速 + 单任务限速(512K / 2M),运行中可改
多连接加速 默认 8 路 HTTP Range 并发
动态切片 空闲线程从最忙分片尾部再切一半,提升尾部吞吐
断点续传 .ddm.part + .ddm.meta,暂停或异常退出后可续传
CLI 单文件命令行下载
Web UI(可选) 本机浏览器管理界面,原生窗口不可用时的备用方案

环境要求

注意: Windows 原生 GUI 必须带 Common Controls 6.0 的 manifest,否则启动可能报 TTM_ADDTOOL failed。仓库提供 cmd/ddm/app.manifest,构建前需生成资源文件。

快速开始

1. 克隆

git clone https://github.com/wangyaominde/DDM.git
cd DDM

2. 生成 Windows 资源(首次或更新图标/清单后)

go install github.com/akavel/rsrc@latest
rsrc -manifest cmd/ddm/app.manifest -ico assets/ddm.ico -o cmd/ddm/rsrc_windows_amd64.syso

也可在 cmd/ddm 目录下执行 go generate(需本机已安装 rsrc)。

3. 编译

go build -o ddm.exe ./cmd/ddm

4. 运行

# 打开原生桌面窗口(推荐)
ddm.exe
#
ddm.exe gui

桌面 GUI

参数 默认 含义
-data data 队列持久化目录(queue.json
-dir downloads 默认下载目录
-c 3 最大同时下载数
-L 0 全局限速(如 10M0 = 不限)

界面支持:新建下载、暂停/继续、取消/删除、任务限速、排队上下移、全局设置。

备用:Web 界面

ddm.exe web
# 默认 http://127.0.0.1:7920/ ,会尝试自动打开浏览器
# ddm.exe web -addr 127.0.0.1:8080 -no-open

CLI

ddm.exe https://example.com/file.zip
ddm.exe -n 16 -l 5M -o big.iso https://example.com/big.iso
ddm.exe -q -o out.bin https://example.com/out.bin
参数 默认 含义
-n 8 连接数
-o 自动推断 输出路径
-l 0 限速(512K / 2M / 0
-q false 静默模式
-min-split 512KB 动态切片阈值

断点续传

文件 作用
目标.ddm.part 未完成数据
目标.ddm.meta 分片进度元数据
data/queue.json GUI 任务队列

Ctrl+C 或在 GUI 中暂停后,进度会保留;继续同一任务即可续传。进程异常退出后,原「运行中」任务会恢复为「暂停」,可在窗口中点继续。

动态切片

初始:  [==A==][==B==][==C==][==D==]
A 下完且 B 仍很长 → A 接手 B 未完成尾部的一半

空闲连接会拆分仍在下载的长分片,减少“最后一公里”拖慢整体速度。

安装包(可选)

源码树不含预编译二进制。若需生成安装程序:

# 构建 dist\ddm.exe 与 dist\DDM-Setup.exe
.\build-installer.ps1

脚本会:生成图标/清单资源 → 编译主程序 → 编译安装器(嵌入 payload)。

项目结构

DDM/
├── cmd/
│   ├── ddm/
│   │   ├── main.go           # CLI + 桌面 + Web 入口
│   │   └── app.manifest      # Common Controls 6.0
│   └── setup/
│       └── main.go           # 可选安装器(运行时嵌入 payload)
├── internal/
│   ├── ui/                   # Windows 原生窗口 (walk)
│   ├── server/               # Web UI HTTP API
│   ├── downloader/           # 引擎、Range、限速、进度
│   ├── queue/                # 任务队列与调度
│   └── meta/                 # 断点元数据
├── web/                      # 浏览器界面静态资源
├── assets/                   # 图标等资源
├── build-installer.ps1       # 安装包构建脚本
├── go.mod
└── README.md

说明与限制

  • 仅支持 HTTP/HTTPS。多线程需要服务端支持 Range
  • 全局限速与任务限速同时生效。
  • 不跟踪、不上报;队列与下载文件均保存在本地目录。

License

MIT

About

DDM - Dynamic Download Manager: IDM-style multi-thread downloader with native Windows GUI (Go)

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages