Hojun-Cho 7545b046af progress: render a single download with the same table as several
block() no longer special-cases one download with a [bracketed] one-liner;
it always draws the summary line, the column header, and one row per
download. The non-TTY path emits the same summary for one or many. This
drops lineOne and the dual rendering path it created, so a column or state
change is made in one place, not two that could drift.
2026-06-22 08:42:30 +09:00
2026-06-21 15:45:56 +09:00
2026-06-19 12:32:14 +09:00

got

A command-line download tool in Go. It fetches HTTP(S) files over multiple connections and downloads BitTorrent magnets and .torrent files — one binary, a small set of flags. It is a downloader, not a web client: there are no cookie/proxy/auth flags — pass --header for a one-off header (auth token, cookie, user-agent) when a download needs one.

Build

go build -o got .

Needs Go 1.25+.

Usage

# HTTP download: parallel out of the box (5 connections); -s turns it up
got https://example.com/big.iso
got -s16 https://example.com/big.iso

# resume an interrupted download
got -c https://example.com/big.iso

# one file from several mirrors (segments spread across the servers,
# a dead mirror falls over); -Z downloads them as separate files instead.
got -s16 https://a.example/big.iso https://b.example/big.iso

# a torrent or magnet; seed for 30 minutes after finishing
got --seed-time=30 ubuntu.torrent
got 'magnet:?xt=urn:btih:...'

# many downloads, two at a time
got -j2 -i urls.txt

Run got --help (or --help=all) for every option.

Common options

flag meaning default
-d, --dir output directory .
-o, --out output filename from URL
-c, --continue resume a partial download false
-s, --split connections per download (the speed dial) 5
-j, --max-concurrent-downloads files downloaded at once 5
--max-overall-download-limit global speed cap 0 (off)
--checksum verify the finished file: TYPE=DIGEST (sha-256, sha-1, …)
--seed-time minutes to seed after a torrent finishes by ratio
--seed-ratio stop seeding at this ratio 1.0
-S, --show-files list torrent files and exit
-q, --quiet no progress output false

Resume

HTTP downloads resume from a small <file>.got sidecar — just re-run with -c. Torrents resume from the data already on disk. To resume across runs, point --save-session and -i at the same file:

got -c --save-session=got.session -i got.session  <urls/magnets...>

Notes

  • BitTorrent uses anacrolix/torrent; HTTP uses the standard library.
  • Not implemented: FTP/SFTP, Metalink, and the JSON-RPC server.
  • Speed caps are global: --max-overall-download-limit / --max-overall-upload-limit apply across the whole run.
  • Standard HTTP_PROXY / HTTPS_PROXY environment variables are honored.
Description
No description provided
Readme 591 KiB
Languages
Go 100%