MCPcopy Index your code
hub / github.com/agourlay/dlm

github.com/agourlay/dlm @v0.7.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.7.2 ↗ · + Follow
225 symbols 441 edges 13 files 47 documented · 21%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

dlm

Build status Crates.io

A minimal HTTP download manager that works just fine.

Features

  • read URLs from a text file
  • control maximum number of concurrent downloads
  • resume interrupted downloads if possible (using HTTP range)
  • automatically retry re-establishing download in case of timeout or hanging connection
  • multi progress bars (made with indicatif)
  • native support for proxies and redirects

Input file format

  • one URL per line
  • empty lines are ignored
  • lines starting with # are ignored as comment

Usage

./dlm --help
Minimal download manager

Usage: dlm [OPTIONS] [URL]

Arguments:
  [URL]  Direct URL to download

Options:
  -m, --max-concurrent <maxConcurrentDownloads>
          Maximum number of concurrent downloads [default: 2]
  -i, --input-file <inputFile>
          Input file with links
  -o, --output-dir <outputDir>
          Output directory for downloads [default: .]
  -u, --user-agent <userAgent>
          User-Agent header to use
      --random-user-agent
          Use a random User-Agent header
      --list-user-agents
          Print the built-in User-Agent pool and exit
      --proxy <proxy>
          HTTP proxy to use
  -r, --retry <retry>
          Number of retries on network error [default: 10]
      --connection-timeout <connectionTimeoutSecs>
          Connection timeout in seconds [default: 10]
      --read-timeout <readTimeoutSecs>
          Read timeout in seconds (0 = wait indefinitely) [default: 60]
  -k, --insecure
          Accept invalid TLS certificates
  -H, --header <header>
          Custom request header (repeatable, format 'Name: Value')
      --user <user>
          Basic auth credentials in format 'user:password'
  -h, --help
          Print help
  -V, --version
          Print version

Examples

  • Download single file
./dlm https://storage.com/my-file.zip
  • Download several files into current directory
./dlm --input-file ~/dlm/links.txt
  • With output directory and max concurrent download control
./dlm --input-file ~/dlm/links.txt --output-dir ~/dlm/output --max-concurrent 2

Installation

Releases

Using the provided binaries in https://github.com/agourlay/dlm/releases

Crates.io

Using Cargo via crates.io.

cargo install dlm

Core symbols most depended-on inside this repo

url
called by 28
tests/common/mod.rs
run_dlm
called by 22
tests/cli.rs
log_above_progress_bars
called by 14
src/progress_bar_manager.rs
run_dlm_in
called by 10
tests/cli.rs
serve_with_range
called by 10
tests/common/mod.rs
compute_resume_action
called by 8
src/downloader.rs
with_retries
called by 6
src/retry.rs
no_hang
called by 6
tests/cli.rs

Shape

Function 183
Method 29
Class 9
Enum 4

Languages

Rust100%

Modules by API surface

tests/cli.rs44 symbols
src/file_link.rs32 symbols
src/headers.rs31 symbols
tests/common/mod.rs29 symbols
src/downloader.rs22 symbols
src/args.rs17 symbols
src/retry.rs16 symbols
src/progress_bar_manager.rs13 symbols
src/main.rs7 symbols
src/utils.rs4 symbols
src/user_agents.rs4 symbols
src/dlm_error.rs3 symbols

For agents

$ claude mcp add dlm \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact